2013-10-02 122 views
1

在Linux系統上,我試圖運行一個使用某些共享庫(netCDF庫,如果這有所影響)的Fortran程序。在我運行之前,我設置了LD_LIBRARY_PATH,以便它指向我的庫的位置。然後我運行可執行文件,我很快得到錯誤尋找缺失共享庫

../my_program:錯誤而載入共享庫:libnetcdff.so.5:無法打開共享對象文件:沒有這樣的文件或目錄

現在,我仔細檢查的LD_LIBRARY_PATH的值,然後cd到它,找到清晰明瞭的

$ LS * FF *

$ libnetcdff.a libnetcdff.la libnetcdff.so libnetcdff.so.0 libnetcdff.so.0.0.0

所以libnetcdff是絕對存在的。

任何人都可以指出我的問題?

我發現的一件事是,可執行文件似乎想要找到libnetcdff.so.5,而存在的庫實際上是libnetcdff.so.0。這是問題嗎?如果是這樣,有沒有辦法說服可執行文件不要堅持「5」?或者,從libnetcdff.so.0到libnetcdff.so.5的鏈接是否能解決問題? (我在目錄中沒有權限,BTW,這就是爲什麼我還沒有嘗試過。)

環境信息:CentOS機器,用gfortran編譯的代碼。是的,當我編譯時,我的-L標誌指向LD_LIBRARY_PATH指向的同一個目錄。

謝謝。

+0

從libnetcdff.so.0創建一個符號鏈接到libnetcdff.so.5。它應該工作... – iamauser

+0

刪除我的評論,因爲我看到了我的錯誤。你的想法有效。 –

回答

1

庫鏈接應該工作。既然你提到,你沒有根/ sudo訪問,你可以做的是在一個文件中的鏈接,您在訪問:

ln -s /path/to/libnetcdff.so.0 /path/you/have/access/to/libnetcdff.so.5 

,然後在LD_LIBRARY_PATH添加在/path/you/have/access/to/

+0

試過了。沒有按計劃去。請參閱我對上面的iamauser的回覆。任何有關錯誤的想法都是非常受歡迎的。 –

+0

欣賞您的編輯。唯一的問題是,ls系列中的兩顆星星實際上是兩顆星星,而不是格式標籤,應該保留原位。我不知道如何做一個「重新編輯」。 –

+0

忽略我的第一條評論。我看到了我的錯誤。你的想法奏效了。謝謝。 –