Textumzüge trotz -fPIC?
Ich versuche, einen anständigen Software-Stack (Doubango) für ARM neu zu kompilieren. Nach zwei Wochen dachte ich, ich hätte es endlich geschafft, weil die Bibliotheken, die Textumzüge hatten, sie nicht mehr für @ hattearmeabi
, armv5te
, armv7-a
. Jedoch,armv7-a-neon
haben sie noch ...
Ich weiß, dass das Verknüpfen mit statischen Bibliotheken oder gemeinsam genutzten Bibliotheken, die Textverlagerungen enthalten, diese auch in meine Bibliothek einführt. Um dagegen anzukämpfen, sollte man @ verwende-fPIC
in seinen CFLAGs, während alles neu kompiliert wird, um positionsunabhängigen Code zu erstellen. Alles, was ich getan habe, ist, dass ich FFMPEG auch ohne Textverschiebungen erstellt habe ...
Was ich nicht verstehe, ist das:Wenn ich für alle Archs denselben Satz von Quelldateien verwende und manuell von Hand überprüfe, ob die .a-Dateien Textverschiebungen enthalten, warum wird für ARMv7 NEON nur eine einzige Textverschiebung angezeigt?
Ich überprüfe mitreadelf
wie soreadelf -a <libame.a> | grep TEXTREL
für beide.a
und.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
Wie finde ich den Täter, der die Textverlagerungen in meinem armv7neon einführt?.so
Bibliothek
Ich benutze NDK r12b. Hier ist ein Pastebin der gesamten Build-Ausgabe: OK, kein Pastie oder Pastebin, da 2,1 MB Text nicht zulässig sind.
Groß. Irgendwelche Ideen, warum Textverlagerungen nur für NEON angezeigt werden?
Die Frage könnte ähnlich zu dieser sein, außer dass ich auch keine Umzüge für x86 habe.Warum generiert NDK eine gemeinsam genutzte Bibliothek für x86 mit Textverschiebung, auch nachdem das -fPIC-Flag gesetzt wurde?