2012-02-23 64 views
0

所以我試圖在WIEN2k中使用GotoBLAS2,在使用make之後,我發現GotoBLAS的構建是完整的(當然,make沒有報錯)。快速檢查文件顯示libgoto2_prescottp-r1.13.alibgoto2_prescottp-r1.13.so包含在目錄/Research/GotoBLAS2中。然而,使用一個小的測試程序,仔細檢查我的工作,我會遇到以下問題:這個鏈接到共享庫有什麼問題?

[email protected]:~/Research/Sr2YRuO6-110914$ gfortran Fit-4.2K-0T-110803test.f -L../GotoBLAS2 -lgoto2_prescottp-r1.13 -o Fit-4.2K-0T-110803test.x 
[email protected]:~/Research/Sr2YRuO6-110914$ ./Fit-4.2K-0T-110803test.x 
./Fit-4.2K-0T-110803test.x: error while loading shared libraries: libgoto2_prescottp-r1.13.so: cannot open shared object file: No such file or directory 

我承認,我是相當陌生鏈接共享庫,但據我可以告訴我的呼叫使用是適當的。任何人都可以幫忙嗎?謝謝!

+0

如果我的答案解決了您的問題,請「接受」答案。如果沒有,請讓我知道目前的問題是什麼,我會盡力幫忙。 – acm 2012-02-24 14:49:25

回答

1

問題是,當您通過-L標誌告訴工具鏈在鏈接時查找共享庫的位置時,您尚未向加載程序提供有關在運行時從何處查找相關庫的任何信息。因此,當您嘗試運行可執行文件時,它無法找到該庫。

你不會說你正在運行的是什麼操作系統,但我會猜測Linux或者其他基於你的命令的unix-y的東西。在這種情況下,您可以在環境中爲LD_LIBRARY_PATH(適用於Linux的man ld-linux.so,或任何運行時鏈接程序的名稱)導出值,也可以在鏈接時在可執行文件中設置DT_RUNPATH條目以記錄庫要搜索的路徑(man ld,或任何你的鏈接器在你的系統上)。

+0

再次感謝您的回覆。我在我的實驗室中的幾臺機器上安裝了一些軟件,我的顧問不知不覺地在其他機器上輸出了LD_LIBRARY_PATH的值,所以他的指示並未解決這個問題。但是,添加適當的庫路徑會立即解決問題。 – HowNowBrownSprow 2012-03-02 01:49:16