Inhalt einer statischen Bibliothek

Lesezeit: 1 Minute

Benutzeravatar von Prasoon Saurav
Prasun Saurav

Ich habe eine statische Bibliothek, sagen wir mystaticlib.a. Ich möchte seinen Inhalt sehen, z. B. die Anzahl der darin enthaltenen Objektdateien.

Wie kann ich das auf gcc machen?

  • Gibt es eine Möglichkeit, dies in Python zu tun?

    – RejeeshChandran

    26. April 2018 um 11:34 Uhr

Benutzeravatar von Prasoon Saurav
Prasun Saurav

Verwenden Sie auf gcc ar -t.

-t Möglichkeit der gnu-Archivierer (ar) schreibt ein Inhaltsverzeichnis des Archivs auf die Standardausgabe. Nur die durch die Dateioperanden spezifizierten Dateien sollen in die schriftliche Liste aufgenommen werden. Wenn keine Dateioperanden angegeben sind, werden alle Dateien im Archiv in die Reihenfolge des Archivs aufgenommen.

Mehr Infos hier.

Sie können den Inhalt (die darin enthaltenen .o-Dateien) und die definierten Symbole anzeigen, indem Sie verwenden nm. Wenn dies C++-Code enthält, sollten Sie die verwenden -C Option zum Entwirren der Symbolnamen:

nm -C libschnoeck.a | less

Verwenden Sie auf einem Mac einfach

nm libschnoeck.a | less

Es gibt kein -C Option mit der Mac-Version von nm.

Benutzeravatar von GreenBærg
GreenBærg

Gerade darüber gestolpert:

Sie können ein Archiv (.a) mit 7zip öffnen. Funktioniert auch für die Objektdateien im Archiv. Auflistung aller möglichen Inhalte wie .text, .bss, .data, usw. mit ihren offset, length, type, … Außerdem ist es möglich, alles zu entpacken, indem man einen Hex-Editor oder Notepad++ verwendet, um den Inhalt anzuzeigen. Ich habe dies mit einem erstellten Archiv getestet GNUToolsARMEmbedded\2018-q4-major\bin\arm-none-eabi- Werkzeugkette u 7Zip 16.04 (64-bit)

Ich habe gerade entdeckt, dass Sie verwenden können readelf -a um den Inhalt aller Objektdateien in einer statischen Bibliothek anzuzeigen.

Rufen Sie den readelf-Befehl wie folgt auf: $ readelf -a mystaticlib.a.

1415630cookie-checkInhalt einer statischen Bibliothek

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy