2011-03-03 50 views
2

我在部署將Qt庫用於ARM設備的示例應用程序時遇到了一些困難。我使用爲我的系統提供的交叉編譯器編譯這些庫,我將這些二進制文件複製到設備上,並使用相同的編譯器編譯了一個示例應用程序。當我嘗試開始時,這就是我所得到的;針對ARM設備的交叉編譯庫

/usr/lib/libstdc++.so.6:版本未找到(由./libQtNetwork.so.4需要)`CXXABI_ARM_1.3.3'

/usr/lib/libstdc++.so.6 :未找到版本'CXXABI_ARM_1.3.3'(需要./libQtCore.so.4)

什麼可能導致這種情況?我使用了製造商提供的工具鏈,所以它應該沒問題......編譯器是否正確,但它不是鏈接到它提供的libstC++,而是鏈接到我的系統中的libstdC++,在鏈接之後路徑? 謝謝!

+1

看來,您在運行時使用的'libstdC++'版本與編譯期間工具鏈使用的版本不同。 – jschmier 2011-03-03 20:06:38

+0

你的意思是它們是用不同的編譯器或不同的版本號編譯的?因爲工具鏈附帶的版本號與設備版本號相同,所以我認爲它也使用相同的編譯器進行編譯。所以,也許在編譯期間,我使用了正確的編譯器,但是它正在編譯x86庫。我該如何檢查並強制使用ARM庫? – 2011-03-03 23:20:51

+0

我試圖編譯一個僅使用C++標準庫的示例應用程序,針對ARM進行交叉編譯,實際上問題依然存在。我如何強制編譯器使用ARM編譯的std庫而不是我在系統中使用的庫? – 2011-03-04 08:28:49

回答

1

就我所見,對我的問題的第一條評論正是解決方案。該庫的版本是相同的,但不兼容。我將該庫移動到設備上,一切正常。

0

從我的經驗來看,我有一個帶有GCC工具鏈的FriendlyARM。爲了生成正確的代碼,我需要手動指定-mcpu,-mfp,-mabi-mabi-float

如果您構建自己的GCC,則可以設置默認值,但至少在我的開發包中,它們帶有錯誤的默認值。