我有一些預先存在的C代碼(由其他人編寫),應該可以正常工作,我只是想編譯它並在我的計算機上運行它。當我嘗試創建一個makefile我收到以下消息的可執行文件:編譯.c:架構x86_64的未定義符號
Undefined symbols for architecture x86_64:
"_gsl_ran_binomial", referenced from:
_develop in develop.o
_developAllRNAs in develop.o
_developWithFeedback in develop.o
"_gsl_ran_exponential", referenced from:
_randomOrg in G.o
_mutateBigK in G.o
_rpois in develop.o
[And some other gsl_related issues]
"_gsl_rng_uniform_int", referenced from:
_randomOrg in G.o
_mutateTrait in G.o
_mutateDBM in G.o
_substitutions in G.o
_makeGamete in G.o
ld: symbol(s) not found for architecture x86_64
我試圖重新安裝gsl
(sudo port install gsl
),但仍顯示錯誤信息。當使用Google搜索錯誤消息時,我看到很多點擊,但到目前爲止沒有任何幫助。
的Makefile
這裏是我的makefile:
LIBS = libs
INCLUDE_PATH=libs/
cli_exec: libraries
gcc cli/makepopulation.c $(wildcard libraries/*) -I$(INCLUDE_PATH) -o cli_exec
libraries:
mkdir libraries/
for dir in $(LIBS); do \
cd $$dir; \
gcc -c *.c -I../; \
mv *.o ../libraries; \
cd -; \
done
clean:
rm -rf libraries/ make_exec
我有點複製粘貼此生成的文件,我在網上找到,並沒有得到太多。我編輯我的問題來添加我的生成文件。基本上,我的功能int main{}
在名爲metapopulation.c的文件中,該文件位於cli
目錄中。 libs
目錄包含所有其他.c和.h文件。並在libraries
的libraries
函數中將它們編譯並調用到目錄0123中。
您鏈接到圖書館?顯示您用來鏈接的命令行。 – 2014-11-07 00:10:20
@PaulGriffiths感謝您的評論。看到我更新的問題。希望這是你所要求的。在Bash中,命令行'make cli_exec'。 '庫'函數似乎工作正常,我只接收到'cli-exec'的錯誤。我應該以某種方式鏈接到我的'gsl'目錄嗎?我實際上通過編寫'#include'鏈接到每個.c文件中的'gsl'目錄' –
2014-11-07 00:54:17
確認您將'-lgsl'傳遞給鏈接器, -L/path/to/libgsl'在庫搜索路徑(應該是,但是檢查) – 2014-11-07 01:54:15