ARM için iyi boyutta bir yazılım yığınını (doubango) yeniden derlemeye çalışıyorum. İki hafta sonra, sonunda bunu yaptığımı düşündüm, çünkü metin yeniden yerleştirme olan kütüphaneler artık armeabi
, armv5te
, armv7-a
için onlara sahip değildi. Ancak, armv7-a-neon
yine de onları ... -fPIC'ye rağmen metin taşınması var mı?
-fPIC
kullanmalıdır mücadele içerirler paylaşılan kütüphaneler olarak bağlanıyor pozisyondan bağımsız kod oluşturmak. Tamamen bitti, ben de metin-yer değiştirmeler olmadan FFMPEG inşa ...
Ne anlamadığım bu: Tüm arşivler için aynı kaynak dosyaları kümesi kullanıyorum ve elle denetleme .a dosyalarının metin yeniden yerleştirme yapıp yapmadığını anlama, ARMv7 NEON için neden yalnızca bir metin yeniden yerleştirme görünür?
Öyle readelf -a <libame.a> | grep TEXTREL
hem .a
ve .so
kütüphanelerini için nasıl readelf
kullanarak kontrol ediyorum.
[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
nasıl armv7neon .so
kütüphanede metin relocations takdim ediyor suçlu buluyor?
NDK r12b kullanıyorum. İşte bütün yapıt çıktısının bir macunu: Tamam, hiçbir pasta ya da macun yok, çünkü bu metin 2.1mb'ye izin vermiyor.
Harika. Yani, metin yerleştirme neden sadece NEON için görünen herhangi bir fikir?
Bu soru simialr olabilir, ancak x86 için de yer değiştirmelerim yok.
Evet, yeniden inşaa ettik ffmpeg ve res:
Doubango'nun github'unda bir sorun açtım ama cevap beklemiyor/ummuyordum. https://github.com/DoubangoTelecom/doubango/issues/486 – Shark
tamam, metin yeniden yerleştirmelerinin FFMPEG'sini temizledim ama neon yapısında hala bir tane var ... – Shark