Я новичок в g ++ и lapack и пытаюсь их использовать. Я столкнулся с проблемой, когда я пытался скомпилировать следующий код наивныеLapack undefined reference
#include <lapackpp.h>
int main()
{
LaGenMatDouble A;
return 0;
}
Если я запустить команду
$g++ -L/usr/local/lib -llapackpp test2.cpp
где test2.cpp это имя файла CPP, терминал будет давать ошибку :
test2.cpp:1:22: fatal error: lapackpp.h: No such file or directory
Но если я запускаю команду:
$g++ -I/usr/local/include/lapackpp -L/usr/local/lib -llapackpp test2.cpp
терминал даст ошибку:
/tmp/ccUi11DG.o: In function `main':
test2.cpp:(.text+0x12): undefined reference to `LaGenMatDouble::LaGenMatDouble()'
test2.cpp:(.text+0x23): undefined reference to `LaGenMatDouble::~LaGenMatDouble()'
collect2: ld returned 1 exit status
BTW, если я запустить команду
$pkg-config lapackpp --libs
результат
-L/usr/local/lib -llapackpp
Не могли бы вы помочь мне решить эту проблему? Заранее спасибо!
Большое спасибо за ваш ответ Аттила. Когда я попытался решить проблему, я сделал много поиска в Google. Кажется, что все используют «-L/usr/local/lib» вместо «-I/usr/local/include/lapackpp», но этот способ, похоже, не работает на моем компьютере. Мне очень любопытно, почему. И я не видел, чтобы многие из них явно отображали «-lg2c» или «-lgfortran» в своей команде связывания, но, похоже, на их компьютерах все нормально работает. Мне интересно, почему. – Conan
Они могут иметь переменную окружения 'LD_LIBRARY_PATH', чтобы включить некоторые общие библиотеки для удобства. Обратите внимание, что '-L' (также,' LD_LIBRARY_PATH', см. Выше) указывает, где _linker_ должен искать библиотеки, указанные с параметрами '-l' (small L), тогда как' -I' (capital i) указывает, где _compiler_ должен искать заголовки, указанные в директивах '# include' – Attila
Я получил его. Большое спасибо! – Conan