我正在運行一個代碼(iHARM2D),它需要羣集上的GNU scientific library library(GSL)。由於GSL庫沒有安裝在集羣上,我必須在那裏編譯它,並在編譯實際代碼時正確鏈接它。在我的shell腳本我寫鏈接到羣集上的GNU科學庫?
cd whereGSLsource
./configure --prefix=/homefolder/iHARM/GSLcompiled
make && make install
這編譯GSL並將結果放置在/ homefolder/iHARM/GSLcompiled/lib目錄,/ homefolder/iHARM/GSLcompiled /包括等
據this answer,我應該能夠通過我的主要代碼
export CPATH="/homefolder/iHARM/GSLcompiled/include":$CPATH
export LIBRARY_PATH="/homefolder/iHARM/GSLcompiled/lib":$LIBRARY_PATH
但是在編譯之前寫以下行到我的shell腳本來編譯,這似乎並沒有因爲編譯返回類型「未定義參考`的錯誤正確鏈接GSL gsl_some_fun ction'」。 (當GSL的默認安裝和使用鏈接它工作在我的電腦上。)
由GSL輸出提出另一種可能在編譯期間或this answer是修改LD_LIBRARY_PATH變量
LD_LIBRARY_PATH="/homefolder/iHARM/GSLcompiled/lib":$LD_LIBRARY_PATH
但這給出了同樣的結果。同樣它沒有當我嘗試使用-L和-I選項
cd iHARM
gcc -someoptions -I../GSLcompiled/include/ -L../GSLcompiled/lib ./some.o -o harm
由GSL提出另一種選擇是使用
gcc -someoptions -Wl,-rpath -Wl,"/homefolder/iHARM/GSLcompiled/lib" ./some.o -o harm
然而,無論這些工作的鏈接。
如何正確鏈接GSL?
(我不是很在這個經歷了那麼這也可能是語法或使一些非常基本的錯誤。)
您的'--prefix'設置可能太具體。請參閱https://stackoverflow.com/a/16363784/841108 –