我是C編程新手,我試圖在Ubuntu 12.10上使用GCC編譯this Simple training example。如何編譯這個庫的用法?
看起來像fann.h不應該包括(如文件本身所述),所以我包含了fixedfann.h。
第一次嘗試(不包括剛看到編譯器會問什麼):
$ gcc main.c -o output
/tmp/cckKyM92.o: In function `main':
main.c:(.text+0x62): undefined reference to `fann_create_standard'
main.c:(.text+0x7a): undefined reference to `fann_set_activation_function_hidden'
main.c:(.text+0x8e): undefined reference to `fann_set_activation_function_output'
main.c:(.text+0xba): undefined reference to `fann_train_on_file'
main.c:(.text+0xce): undefined reference to `fann_save'
main.c:(.text+0xda): undefined reference to `fann_destroy'
collect2: ld returned 1 exit status
fann_create_standard
是fann.h和fann.c.由於fann.h包含在fixedfann.h中,並且不應該直接包含fann.h,我相信我必須編譯fann.c和fixedfann.c,然後鏈接(告訴我我是否犯了錯誤,我我還不熟悉這個「連接」的東西)。
所以我做:
$ gcc fann/fixedfann.c -o fann/fixedfann.o
fann/fixedfann.c:22:20: fatal error: config.h: No such file or directory
compilation terminated.
,然後我做:
$ gcc fann/fixedfann.c -o fann/fixedfann.o -include fann/include/config.h
fann/fixedfann.c:22:20: fatal error: config.h: No such file or directory
compilation terminated.
現在,它爲什麼不在這裏找到的config.h文件?
--update
感謝@JonathanLeffler,我可以在這裏做一些步驟。但現在我被困在:
$ gcc fann/fixedfann.c -o fann/fixedfann.o -I./fann/include/ -lm
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
,並使用grep,我找不到對文芳文件夾...還沒有功能_start
到main
任何參考,我不知道是誰這個鏈接crt1.o
...任何想法這裏有什麼不對?
--update2
好吧,我用Harmeet的Makefile,現在我試圖鏈接一切.o文件。 我gcc -c main.c
創建的main.o
,並且我想:
gcc -o output main.o fann/fixedfann.o -lm
(-lm爲libmath,即需要)和我:
main.c:(.text+0xba): undefined reference to `fann_train_on_file'
這fann_train_on_file
是fann_train_data.c
,所以我嘗試:
gcc -o output main.o fann/fixedfann.o fann/fann_train_data.o -lm
,但我得到了很多multiple definition of...
錯誤...的:/
看起來像fann_train_data.o
已包含/鏈接,但如果是這樣,爲什麼它沒有找到fann_train_on_file
?
--update3
我還是很堅持在這裏...這兩條線的任何想法,其中(如果有的話)應該工作?:
gcc -o output main.o hello.o fann/fixedfann.o fann/fann_train_data.o -lm
或
gcc -o output main.o hello.o fann/fixedfann.o -lm
--update爲Harmeet
產量爲:
$ make
gcc -L./fann -lfann main.o -o main
main.o: In function `main':
main.c:(.text+0x62): undefined reference to `fann_create_standard'
main.c:(.text+0x7a): undefined reference to `fann_set_activation_function_hidden'
main.c:(.text+0x8e): undefined reference to `fann_set_activation_function_output'
main.c:(.text+0xba): undefined reference to `fann_train_on_file'
main.c:(.text+0xce): undefined reference to `fann_save'
main.c:(.text+0xda): undefined reference to `fann_destroy'
collect2: ld returned 1 exit status
make: *** [main] Error 1
你可能需要用'-Ifann'作爲一個額外的參數傳遞給GCC命令行。 – 2014-10-03 00:01:29
'$ gcc fann/fixedfann.c -o fann/fixedfann.c -include fann/include/config.h'你覆蓋了你的源文件? – wildplasser 2014-10-03 00:01:42
@wildplasser抱歉,我的意思是'$ gcc fann/fixedfann.c -o fann/fixedfann.o -include fann/include/config.h' - 我仍然收到錯誤 – 2014-10-03 00:08:58