2010-10-14 51 views
1

我有一個使用libtool構建的庫,它安裝在包的庫目錄/usr/local/lib/myprog/libmylib.so中。我用libltdl動態加載我的代碼庫。當我嘗試在一臺機器上加載這個庫時,它工作得很好。另一方面,如果在同一位置安裝了相同的版本和庫,則會出現「文件未找到」錯誤。當文件位於正確路徑時,dlopen失敗,找不到文件

如果我在lt_dlopenext(我用來加載庫)之前直接調用lt_dlforeachfile,那麼通過打印文件名可以看到我需要的庫已經在搜索路徑中找到。但之後立即加載失敗,出現「文件未找到」錯誤。有什麼建議麼?

UPDATE

我曾嘗試切換到使用dlopen,並明確指明瞭該庫的絕對路徑。這仍然適用於某些系統,而不適用於其他系統。

回答

1

原來,libltdl隱藏了真正的錯誤。 「找不到的文件」來自我正在加載的庫所依賴的另一個庫。當使用dlerror()打印錯誤消息時,我發現了這一點。安裝缺失的庫後,一切都很好!

+0

調試這種錯誤的另一種方法是給出[這裏](http://stackoverflow.com/a/9567335/1043187)。 – BenC 2015-04-13 04:12:56

相關問題