2016-10-10 53 views
5

我正在尝试为ARM重新编译适当大小的软件堆栈(doubango)。两周后,我想我终于完成了,因为文本重定位的库不再具有armeabi,armv5te,armv7-a。然而,armv7-a-neon还有他们...尽管-fPIC文本重定位?

我知道,链接到的静态库或包含文本重定位会在我的图书馆介绍他们的好,打一个人应该在他的CFLAGS使用-fPIC而重新编译所有的共享库构建独立于位置的代码。所有这一切,我建立了FFMPEG没有文本重定位以及...

我不明白的是这样的:如果我使用相同的源文件的所有拱组,并手动检查不管.a文件是否具有文本重定位,为什么ARMv7 NEON只出现单个文本重定位?

我使用readelf像这样readelf -a <libame.a> | grep TEXTREL两个.a.so库检查。

[email protected]:~/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上?

这个问题可能是simialr,除了我没有x86的重定位。 Why is NDK generating shared library for x86 with text relocation even after setting -fPIC flag?

回答

5

如果一切正在建立与-fPIC,其余文本重定位一般在任何手写汇编。

它看起来像ffmpeg的是已知有一些文字搬迁问题与它的汇编代码:

+0

是啊,我重修的ffmpeg用' - 禁用asm'标志和RES ulting库本身没有文本重定位(因为汇编器部分不包括在内)。 ARM库本身没有文本重定位,这意味着我清理了它们;只有NEON库有1个文本重定位,这就是为什么我难倒了。 – Shark

+0

我在doubango的github上打开了一个问题,但我并不期待/希望得到答复。 https://github.com/DoubangoTelecom/doubango/issues/486 – Shark

+0

好的,我已经清除了文本重定位的FFMPEG,但霓虹灯构建仍然有一个... – Shark

相关问题