[英]NDK12b: Different ELF produced by clang vs gcc using the standalone toolchain and the same build scripts
我們的產品包含多個源程序包。 一些源程序包是使用autotool / conf構建的。
根據Google所說的從NDK-13開始,將clang用作NDK的默認編譯器的說法,我們繼續進行* .mk文件以及環境設置和構建腳本中的切換。 沒有更改文件。
我們使用的是舊的NDK-10d,因此我們改用了NDK-12b。 根據Android文檔的建議,我們還從中生成了一個獨立的工具鏈,以簡化我們的構建腳本並使所有標准標准化。
我面臨的問題是,加載本機代碼后,啟動時會崩潰。 我注意到的是logcat中的一條警告,內容涉及: unused DT entry: type 0x6ffffffe
( VERNEED )和0x6fffffff
( VERNEEDNUM )。
然后,可怕的: A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x30 in tid 22246
。
堆棧跟蹤告訴我非常少的信息:
08-11 15:31:02.421 128-128/? I/DEBUG: #00 pc 00036b8c /system/lib/libc.so
08-11 15:31:02.421 128-128/? I/DEBUG: #01 pc 0003817b /system/lib/libc.so (vfprintf+18)
08-11 15:31:02.421 128-128/? I/DEBUG: #02 pc 00035251 /system/lib/libc.so (fprintf+12)
08-11 15:31:02.421 128-128/? I/DEBUG: #03 pc 000015fd /data/app/com.myapp.demo-1/lib/arm/libappdebug.so (pipe_listen+328)
08-11 15:31:02.421 128-128/? I/DEBUG: #04 pc 0001659b /system/lib/libc.so
08-11 15:31:02.421 128-128/? I/DEBUG: #05 pc 000144c3 /system/lib/libc.so
請注意,將readelf -d
轉儲的ELF中的數據進行比較,可以看出在arm-linux-androideabi-gcc-4.9構建生成的二進制文件中沒有這2個DT條目。
任何想法,指針,……任何東西……都將不勝感激,因為我被卡住(臉紅)三天了。
謝謝。
您需要調查unused DT entry
的問題。 如果您正在使用庫在其他地方輸送管道,則該警告將在每次運行時出現,並危及管道接收垃圾或使應用程序接收異常的危險。 請在這里看我的帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.