Wie kann ich Funktionen in gemeinsam genutzten Objektdateien mithilfe von objdump- und Bash-Funktionen in Linux finden?

Lesezeit: 2 Minuten

Ich habe einen Ordner in Linux, der mehrere gemeinsam genutzte Objektdateien (*.so) enthält. Wie kann ich Funktionen in gemeinsam genutzten Objektdateien mithilfe von objdump- und Bash-Funktionen in Linux finden?

Das folgende Beispiel ist zum Beispiel eine gefundene Funktion func1 in mylib.so:

objdump -d mylib.so | grep func1

Aber ich will finden func1 im Ordner, der gemeinsame Objektdateien enthält. Ich kenne die Bash-Sprache nicht und weiß nicht, wie man Linux-Terminalbefehle kombiniert.

nm ist einfacher als objdumpfür diese Aufgabe.
nm -A *.so | grep func sollte arbeiten. Das -A Flagge erzählt nm um den Dateinamen zu drucken.

  • Du brauchst die -D Option, um tatsächlich in der Liste der exportierten Symbole nachzusehen.

    – Jörgensen

    20. Februar 2012 um 22:31 Uhr

  • @jørgensen, aus der Frage geht nicht hervor, ob er eine exportierte Funktion will. Vielleicht möchte er wissen, welche Bibliothek er nach dem Ändern einer Funktion neu erstellen muss.

    – ugoren

    21. Februar 2012 um 7:40 Uhr

Benutzer-Avatar
Deepak

Sie können auch verwenden,

find <path> -name "*.so" -exec nm {} \; | grep func1

  • grep func1 nm {}?? Meinst du nm {} | grep func1?

    – ugoren

    20. Februar 2012 um 9:49 Uhr

  • Sie würden nm | ausführen grep func1, die Ausführung erfolgt von links nach rechts, wenn Sie es ohne exec verwenden. Bei exec erfolgt die Ausführung jedoch von rechts nach links und {} gibt die Eingabe des find-Befehls an, sodass der obige Befehl bedeutet, dass grep auf dem Ergebnis von nm für alle Dateien von find ausgeführt wird.

    – Deepak

    20. Februar 2012 um 12:43 Uhr


  • Ich habe Ihre Linie ausprobiert – es funktioniert einfach nicht. Es läuft einfach grep func1 nm xxx.so pro Datei, die sucht func1 in einer Datei namens “nm” und in der Binärdatei (ohne nm auszuführen).

    – ugoren

    20. Februar 2012 um 13:44 Uhr

  • Ja, du hast recht. Das ist mir letztes Mal nicht so genau aufgefallen. Ich habe meine Antwort bearbeitet.

    – Deepak

    21. Februar 2012 um 9:33 Uhr

1244970cookie-checkWie kann ich Funktionen in gemeinsam genutzten Objektdateien mithilfe von objdump- und Bash-Funktionen in Linux finden?

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

Privacy policy