2016-10-10 43 views
5

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ı?

bildiğim olduğunu statik kütüphaneler veya metin taşınma yanı Kitaplığımdaki onları tanıtacak ve her şeyi yeniden derlemeden ederken o kimse onun CFLAGS -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.

cevap

5

Her şey -fPIC ile oluşturuluyorsa, kalan metin yer işaretleri genellikle elle yazılmış bir derlemedir. Android hata izci

+0

Evet, yeniden inşaa ettik ffmpeg ve res:

  • orada iddia buraya bu konuda başka soru bir düzeltmedir Nihai kütüphanelerin kendilerine ait metin yer değiştirmeleri yoktur (montaj parçası dahil edilmediğinden). ARM kütüphanelerinin kendilerine metin yerleştirme yolları yoktur; Sadece NEON kitaplıklarında 1 metin yeniden yerleştirme var, bu yüzden güvendim. – Shark

  • +0

    Doubango'nun github'unda bir sorun açtım ama cevap beklemiyor/ummuyordum. https://github.com/DoubangoTelecom/doubango/issues/486 – Shark

    +0

    tamam, metin yeniden yerleştirmelerinin FFMPEG'sini temizledim ama neon yapısında hala bir tane var ... – Shark