Wie kann ich wissen, ob einer ARM-Bibliothek ist mit hardfp?
Ich habe keinen Zugriff auf den Befehl "erstellen", ich habe nur die Bücherei in meinem system.
Ich denke, ich konnte bauen ein hardfp ausführbare Datei, die links gegen und zu testen, aber ich Frage mich, ob es ist ein einfacher Weg.
- Ich würde versuchen, zu zerlegen, die Bibliothek und suchen Sie nach der entsprechenden hardfp Anweisungen. Das Vorhandensein oder fehlen der Anleitung ist ein guter Indikator.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausführen
readelf -A library.so
: wenn die Liste der gedruckten tags enthältTag_ABI_VFP_args: VFP registers
, dann ist es einhardfp
binary, sonst übernehmensoftfp
.E. g.
readelf -A /lib/arm-linux-gnueabihf/libm.so.6
produzierenAuf der anderen Seite
readelf -A /lib/arm-linux-gnueabi/libm.so.6
produziertreadelf
nicht unterstützt Parsen von ARM-EABI-Attributeman (1) readelf
sagt ` -A --arch-spezifisch Zeigt Architektur-spezifische Informationen in der Datei, wenn es eine gibt.` Warum funktioniert es mit nur ARM?readelf -A <archive>
geben Sie die Attribute für jedes enthaltene Objekt-Datei, so müssen Sie sich nicht extrahieren Sie das Archiv.Verwenden
readelf
.Hier einige Beispiel-Ausgabe von einem ein-ARM-build von Poco:
In der flags-Abschnitt, es listet die Daten über die elf-Datei. Diese sind definiert in der ARM-ELF-Spezifikation, überprüfen Sie die Tabelle 4-2. In meinem Fall war dies mit einem hard-float-compiler, so hard-float ist aufgeführt, wie eine fahne.
Auf ein soft-float-Bibliothek, die flags-Zeile sieht wie folgt aus:
hardfp
/softfp
flags Hinzugefügt wurden erst vor kurzem, und nur die neuesten toolchains unterstützen. Ältere toolchains zeigen floating-point-ABI nur in EABI Abschnitt "Attribute".Verwenden
objdump -d
zu zerlegen, dann ist grep für einige floating-point-Befehle. Ich bin mir nicht sicher, ob objdump produzieren UAL-konforme Montage, so versuchen, die alte syntax auch. Es ist auch einfacher zu beobachten, registrieren, Namen, die eher als Kommando-Kürzel, aber es könnte falsch positive Ergebnisse.