在使用Armadillo代数包中的某些函数时,我会收到以下错误:
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 :(得分:0)
我花了几天时间才能为我的Android开发安装armadillo。所以我想与您分享解决问题的经验。
对`clapack_dgetrf'的错误未定义引用是链接错误。此函数应包含在其中一个库-llapack -lf2c -lblas中。当然它是clapack,所以它应该在lapack库中。使用命令nm来检查lapack库(liblapack.a或liblapack.so)是否包含此符号。我相信你会找到解决方案。希望它有所帮助。