在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
指向的同一個目錄。
謝謝。
從libnetcdff.so.0創建一個符號鏈接到libnetcdff.so.5。它應該工作... – iamauser
刪除我的評論,因爲我看到了我的錯誤。你的想法有效。 –