Sha*_*ark 5 c android cross-compiling android-ndk
我正在尝试为ARM重新编译一个体积适中的软件堆栈(doubango).两周后,我以为我终于完成它,因为有文字搬迁库不再让他们为armeabi,armv5te,armv7-a.但是,armv7-a-neon仍然有它们......
我知道链接静态库或包含文本重定位的共享库也会在我的库中引入它们,并且-fPIC在重新编译所有内容以构建与位置无关的代码时,应该在他的CFLAGS中使用它.所有这一切,我建立了FFMPEG没有文本重定位...
我不明白的是:如果我对所有arch使用相同的源文件集,并手动手动检查.a文件是否有文本重定位,为什么只显示一个文本重定位ARMv7 NEON?
我正在检查使用readelf这样readelf -a <libame.a> | grep TEXTREL的两个.a和.solibs.
devshark@ubuntu:~/SCRATCH/doubango_env/doubango/android-projects/output/gpl/armv7-a-neon/lib$ readelf -a libtinyWRAP.so | grep TEXTREL
0x00000016 (TEXTREL) 0x0
0x0000001e (FLAGS) SYMBOLIC TEXTREL BIND_NOW
Run Code Online (Sandbox Code Playgroud)
如何在armv7neon .so库中找到引入文本重定位的罪魁祸首?
我正在使用NDK r12b.这是整个构建输出的一个pastebin:OK,没有pastie或pastebin,因为它们不允许2.1mb的文本.
大.那么,任何想法为什么文本重定位只出现在NEON?
问题可能与此类似,除了我没有重新定位x86.为什么即使在设置-fPIC标志之后NDK也会为文本重定位生成x86的共享库?
如果正在构建所有内容-fPIC,则剩余的文本重定位通常在任何手写的程序集中.
看起来ffmpeg的汇编代码有一些文本重定位问题: