2014-04-11 71 views
0

當犰狳代數包我收到以下錯誤使用一些功能:犰狳包裝鏈接錯誤

armadillo_bits/atlas_wrapper.hpp:188: undefined reference to `clapack_dgetrf' 

我已經掛是這樣的:

arm-linux-gnueabihf-g++ -march=armv7-a  -mthumb-interwork -mfloat-abi=hard 
-mfpu=neon  
-mtune=cortex-a9 --sysroot=/home/mg/yocto/build/tmp/sysroots/socfpga_cyclone5 
-DHAVE_CONFIG_H -I. -I.. --sysroot=/home/mg/yocto/build/tmp/sysroots 
/socfpga_cyclone5 -g -O2 -L/opt/altera-linux/linaro/gcc-linaro-arm-linux-gnueabihf- 
4.7-2012.11-20121123_linux/arm-linux-gnueabihf/lib -I/opt/altera-linux/linaro 
/gcc-linaro-arm-linux-gnueabihf-4.7-2012.11-20121123_linux/arm-linux-gnueabihf 
/include -llapack -lf2c -lblas -lm --sysroot=/home/mg/yocto/build/tmp/sysroots 
/socfpga_cyclone5 -MT AlgoLibTests.o -MD -MP -MF .deps/AlgoLibTests.Tpo -c -o 
AlgoLibTests.o AlgoLibTests.cpp 

我這裏遵循的指示,一切都精細:

Cross-Compiling Armadillo Linear Algebra Library

什麼想法?

+0

看起來像你配置犰狳使用ATLAS。這可能是由基於cmake的安裝程序完成的。我建議編輯'include/armadillo_bits/config.hpp'並禁用ATLAS。但是,請確保使用LAPACK仍處於啓用狀態。 – mtall

+0

我確定它從該文件被禁用。那麼,你認爲CLAPACK庫已經建好了嗎?構建它時我沒有看到任何錯誤。 – user1876942

+0

CLAPACK和LAPACK是相關的,但有兩個獨立的庫。它們實現相同的功能,但具有不同的API。 – mtall

回答

0

我花了幾天時間才能爲我的Android開發安裝犰狳。所以我想與大家分享解決問題的經驗。

對`clapack_dgetrf'的錯誤未定義引用是一個鏈接錯誤。這個函數應該包含在這些庫之一-llapack -lf2c -lblas中。當然它是clapack,所以它應該在lapack庫中。使用命令nm檢查lapack庫(liblapack.a或liblapack.so)是否包含此符號。我相信你會發現解決方案。希望能幫助到你。