使用 NDK 制作的编译工具链编译出可执行文件后,传到 Android 中运行的时候,会出现如下的 WARNING 信息:
WARNING: linker: liblxc.so: unused DT entry: type 0x6ffffffe arg 0x8c04
WARNING: linker: liblxc.so: unused DT entry: type 0x6fffffff arg 0x1
提示信息可能有些数据不相同,但都属于 unused DT entry 问题;
官方已经给出了详细的说明、原因以及警告的类型,而且从 Android5.1开始,就会警告 verneed 和 verneednum 的问题;
下面给出解决方法:
-
制作 android_elf_cleaner 工具
1) github地址下载android_elf_cleaner
git clone https://github.com/kost/android-elf-cleaner.git
2)直接在 linux 中执行 make 命令,即可编译得到 android-elf-cleaner 可执行程序如下载速度过慢可参考 https://blog.csdn.net/qq_30123335/article/details/116602517
cd android_elf_cleaner make
- 处理一下编译出来的可执行文件,再次运行即可消除此问题
usage: ./android-elf-cleaner <filename> Processes ELF files to remove DT_VERNEEDED, DT_VERNEEDNUM, DT_RPATH and DT_RUNPATH entries (which the Android linker warns about)
结果如下:
