so 加載符號找不到的問題解決


WARNING: Could not load test.so: Cannot load library: reloc_library[1312]:  1332 cannot locate '__aeabi_f2uiz'...
這個問題是gcc的編譯問題,需要把gcc.a打進去即可,但是解決問題的過程很重要,在這里記錄下:
遇到這種情況就在so所在的目錄查看是否有這個符號
objdump -tT test .so | grep __aeabi_f2uiz 
通過查看,確實是不存在的。
 
然后查看該test.so的依賴庫是否有 
在symbols/system/lib/的目錄,該目錄是帶詳細debug符號信息的so,查看相關信息
首先查看該test.so的依賴庫
objdump -x test.so | grep NEED
NEEDED libtest2.so
NEEDED libtest3.so
接着通過
nm libtest2.so| grep __aeabi_f2uiz
確認這個符號屬於哪個so
通過確認后,發現在這個符號有個地址 例如:0000010
通過 addr2line -f -e libtest2.so 0000010 查看具體的符號所在的代碼
發現這個符號是gcc相關。
結合在網上搜集到的資料,確實是gcc導致的問題
最后在編譯的臨時靜態目錄里添加這個靜態文件
新建libgcc文件夾,將gcc.a復制進去
out\target\product\generic\obj\STATIC_LIBRARIES\libgcc\gcc.a
最后修改mk文件
LOCAL_STATIC_LIBRARIES += libgcc

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM