我正在尝试为ARM重新编译一个体积适中的软件堆栈(doubango).两周之后,我以为我终于完成了它,因为有文本重定位的库不再使用armeabi,armv5te,armv7-a.然而,armv7-a-neon还有它们……

我知道链接静态库或包含文本重定位的共享库也会在我的库中引入它们,并且为了解决这个问题,应该在他的CFLAGS中使用-fPIC,同时重新编译所有内容以构建与位置无关的代码.所有这一切,我建立了FFMPEG没有文本重定位…

我不明白的是:如果我对所有arch使用相同的源文件集,并手动手动检查.a文件是否有文本重定位,为什么只显示一个文本重定位ARMv7 NEON?

我正在检查如何使用readelf readelf -a< libame.a> | grep TEXTREL用于.a和.so libs.

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

我怎样才能找到在我的armv7neon .so库中引入文本重定位的罪魁祸首?

我正在使用NDK r12b.这是整个构建输出的一个pastebin:OK,没有pastie或pastebin,因为它们不允许2.1mb的文本.

大.那么,任何想法为什么文本重定位只出现在NEON?

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐