Ошибки Armadillo Wrapper Linker
При использовании некоторых функций в пакете алгебры Армадилло я получаю следующие ошибки:
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
Я следовал инструкциям здесь, и все прошло хорошо:
Библиотека кросс-компиляции линейной алгебры Armadillo
Есть идеи?
1 ответ
Мне также понадобилось несколько дней, чтобы установить броненосец для разработки под Android. Поэтому я хочу поделиться с вами опытом решения вашей проблемы.
Ошибка неопределенной ссылки на `clapack_dgetrf 'является ошибкой компоновки. Эта функция должна содержаться в одной из этих библиотек -llapack -lf2c -lblas. Конечно, это клапак, поэтому он должен быть в библиотеке. Используйте команду nm, чтобы проверить, содержит ли библиотека lapack (liblapack.a или liblapack.so) этот символ. Я уверен, что вы найдете решение тогда. Надеюсь, поможет.