簡體   English   中英

NDK12b:clang和gcc使用獨立工具鏈和相同的構建腳本生成的不同ELF

[英]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 0x6ffffffeVERNEED )和0x6fffffffVERNEEDNUM )。

然后,可怕的: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM