2016-01-02 111 views
1

我一直在試圖動態鏈接一個共享對象與二進制文件。一切都很好,直到我嘗試運行它,它給了我:在交叉編譯中找不到動態鏈接庫

/tmp/test: error while loading shared libraries: libxl.so: cannot open shared object file: No such file or directory 

也LDD表示該文件無法找到。當然,有問題的庫位於默認位置(/ lib/arm-linux/gnueabihf)。在庫被複制之後,我也運行了ldconfig。

我檢查了以下幾件事:

  • 集rpath中包含的位置與正確的位置
  • 集LD_LIBRARY_PATH
  • 創建具有相同名稱的虛擬共享對象 - 它已成功發現(當然沒有必要的符號)

,創建庫爲:

ELF 32-bit LSB shared object, ARM, EABI4 version 1 (SYSV), dynamically linked 

而測試二進制文件:

ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked 

的EABI版本可以導致這些類型的問題與運行?還有什麼我可以嘗試讓它運行?

回答

0

庫路徑必須是HOST機器中庫的位置,而不是目標機器。看起來「/ lib/arm-linux/gnueabihf」是目標機器中庫的位置。

在工具鏈sysroot中找到libxl.so的正確路徑。

+0

當我創建一個模擬庫並將其放置在與原始庫相同的位置時,它被發現並加載(當然沒有必要的符號,因此執行失敗)。那麼問題是EABI版本不匹配是否會導致這樣的問題。 – MarGru