2011-08-30 39 views
0

我試圖將我的Qt代碼從Linux移植到嵌入式Linux。現在,我在網上看了看,我碰到這個文件來了解如何部署到嵌入式linux/Linux的: http://doc.qt.io/archives/qt-4.7/deployment-x11.html從Linux到嵌入式Linux集成/移植Qt

所以,現在我用的是共享庫的方法,因爲我認爲這會給我最大的靈活性,也似乎使用最新的QtSDK,我無法靜態部署我的應用程序。我遵循說明中提到的所有步驟,我沒有插件。因此,當我完成這些步驟時,我將所有代碼和相關庫移植到特定目錄:/ tmp/MyFolder ....我使用ldd -v Application.exe確定需要使用的端口庫。所以現在的事情是,當我將庫移植到嵌入式Linux機器上時,我注意到其中一些庫已經存在於/ usr/lib和/ lib目錄中。所以,當我運行我的代碼時,我編寫了一個shell腳本來修改LD_LIBRARY_PATH環境變量,以檢查這些目錄和我自己的目錄中相應的庫。現在,當我在嵌入式Linux框上運行我的代碼時,出現以下錯誤:

加載共享庫時出錯:/tmp/ftproot/RenderingEngine/./libm.so.6:ELF文件OS ABI無效。

我試過用google搜索錯誤,但我仍然不知道這個錯誤的含義以及如何解決它。庫libm.so.6位於/ usr/lib目錄和我的自定義目錄中。但是,我設置LD_LIBRARY_PATH的方式首先檢查我的自定義目錄。有人可以幫我解決這個問題嗎?

回答

0

ELF錯誤表示您已鏈接到系統的不兼容二進制格式的庫。你只應該鏈接到爲目標OS編譯的庫(在這種情況下,不論是哪種版本的嵌入式Linux)。

嘗試重新編譯代碼並鏈接到系統上已存在的庫(即在/usr/lib中)。