开发者

file format not recognized; treating as linker script

开发者 https://www.devze.com 2023-01-08 14:21 出处:网络
I am trying to run the C files downloaded from here as follows : gcc main.c docs_file.txt ksg_file.txt

I am trying to run the C files downloaded from here as follows :

gcc main.c docs_file.txt ksg_file.txt

However, I receive the following error:

/usr/bin/ld:docs_file.txt: file format not recognized; treating as linker script
/usr/bin/ld:docs_file.txt:2: syntax error
collect2: ld returned 1 exit status

I am not sure what the problem is.

Upda开发者_Go百科te 1:

I get the following errors while compiling:

gcc main.c -o ksg


/tmp/cc4H83rG.o: In function `main':
main.c:(.text+0xa5): undefined reference to `stree_new_tree'
main.c:(.text+0xe0): undefined reference to `stree_add_string'
main.c:(.text+0x2a7): undefined reference to `stree_match'
main.c:(.text+0x38f): undefined reference to `int_stree_set_idents'
main.c:(.text+0x422): undefined reference to `int_stree_get_parent'
main.c:(.text+0x47b): undefined reference to `int_stree_get_suffix_link'
/tmp/cc4H83rG.o: In function `count_freq':
main.c:(.text+0x96d): undefined reference to `int_stree_set_idents'
main.c:(.text+0x9a8): undefined reference to `stree_get_num_leaves'
main.c:(.text+0xa91): undefined reference to `int_stree_set_idents'
/tmp/cc4H83rG.o: In function `select_feature':
main.c:(.text+0xb34): undefined reference to `int_stree_set_idents'
main.c:(.text+0xbe7): undefined reference to `stree_get_num_children'
main.c:(.text+0xc47): undefined reference to `int_stree_get_parent'
main.c:(.text+0xc67): undefined reference to `int_stree_set_idents'
main.c:(.text+0xc94): undefined reference to `int_stree_get_parent'
main.c:(.text+0xdbb): undefined reference to `int_stree_get_suffix_link'
main.c:(.text+0xddb): undefined reference to `int_stree_set_idents'
main.c:(.text+0xe08): undefined reference to `int_stree_get_suffix_link'
collect2: ld returned 1 exit status


The tarball you linked to contains source code. To run the code you need to compile it into an executable. You can then run the executable if the compilation succeeds.

Here are the files you should have to start with, directly from the tar file:

$ ls
ksg     main.c      sample_ksgs.txt stree.h
ksg.exe sample_docs.txt stree.c     stree.txt

Compile

First we'll compile the program. The -o ksg names the executable ksg. When gcc displays nothing that means it succeeded without any errors or warnings.

$ gcc -o ksg main.c stree.c

Run

Now we can run the ksg executable we just created. The command-line syntax is ./ksg <arguments>. For example, we can ask for help with ./ksg -?:

$ ./ksg -?
Dell Zhang, Wee Sun Lee.
Extracting Key-Substring-Group Features for Text Classification.
In Proceedings of the 12th ACM SIGKDD International Conference on
   Knowledge Discovery and Data Mining (KDD),
Philadelphia, PA, Aug 2006.

Usage: ksg [options] docs_file ksgs_file

Options:
         -?          -> help
         -s [0,1]    -> assume white-spaces are word delimiters
                        (default 1)
         -l [2..]    -> the minimum frequency
                        (default 2)
         -h [l..]    -> the maximum frequency
                        (default 8,000)
         -b [2..]    -> the minimum number of branches
                        (default 2)
         -p (0..1]   -> the maximum parent-child conditional probability
                        (default 1.0)
         -q (0..1]   -> the maximum suffix-link conditional probability
                        (default 1.0)
Arguments:
         docs_file    -> the input  file with each line as a raw document
         ksgs_file    -> the output file with each line as a bag of ksg features


Usually, gcc can compile only .c files - which, by convention, hold C code inside them.

.txt files are usually plain text. For human eyes only.

Try

gcc *.c


With C, you don't run a program using the compiler. You first compile the C file to a binary (gcc main.c -o binary). Then you execute it (./binary docs_file.txt ksg_file.txt).

0

精彩评论

暂无评论...
验证码 换一张
取 消