我是g ++和lapack的新手,並試圖使用它們。我遇到一個問題,當我試圖編譯下面的代碼天真Lapack undefined reference
#include <lapackpp.h>
int main()
{
LaGenMatDouble A;
return 0;
}
如果我運行命令
$g++ -L/usr/local/lib -llapackpp test2.cpp
其中測試2.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
順便說一句,如果我運行命令
$pkg-config lapackpp --libs
結果是
-L/usr/local/lib -llapackpp
能否請你幫我解決這個問題?提前致謝!
非常感謝您的回覆,Attila。當我試圖解決問題時,我做了很多谷歌搜索。每個人似乎都使用「-L/usr/local/lib」而不是「-I/usr/local/include/lapackpp」,但這種方式似乎不適用於我的電腦。我很好奇爲什麼。我沒有看到它們中的許多在它們的鏈接命令中明確包含「-lg2c」或「-lgfortran」,但它似乎在他們的計算機上正常工作。我想知道爲什麼。 – Conan 2012-04-06 13:06:02
爲方便起見,他們可能會將其LD_LIBRARY_PATH環境變量設置爲包含一些常用庫。注意'-L'(也就是'LD_LIBRARY_PATH',見上面)指定_linker_應該在哪裏查找用'-l'(小L)選項指定的庫,而'-I'(大寫i)指定_compiler_應該查找'#include'指令中提到的頭文件 – Attila 2012-04-06 14:13:48
我明白了。非常感謝! – Conan 2012-04-06 14:48:18