[英]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.