我使用我的Red Hat为ARMv7交叉编译了Armadillo。
当我尝试进行矩阵乘法时,我得到错误:
armadillo_bits/blas_wrapper.hpp:79: undefined reference to `wrapper_dgemv_'
我从源代码构建了BLAS和LAPACK,它似乎找到了LAPACK,因为它让我可以毫无错误地进行Cholesky分解。
我是这样建造的:
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
我把我的BLAS和LAPACK放在这里:
/opt/altera-linux/linaro/gcc-linaro-arm-linux-gnueabihf-
4.7-2012.11-20121123_linux/arm-linux-gnueabihf/lib
如果我禁用了BLAS支持,它的计算速度非常慢。
这在配置文件中定义
ARMA_USE_BLAS
这是禁用的。
ARMA_USE_WRAPPER
ATLAS也被禁用。为什么找不到那个BLAS库?
答案 0 :(得分:0)
当我尝试为我的Android项目编译Armadillo时,我也遇到了这个错误。我确信ARMA_USE_WRAPPER尚未停用。这就是为什么你得到错误未定义的引用`wrapper_dgemv _'。再次检查。
我还注意到Mobile上的矩阵计算速度比我的Mac OS慢。