2016-09-26 1 views
0

Ist es möglich, ein Befehlszeilendienstprogramm in Linux zu verwenden, um festzustellen, was in meine ausführbare Datei verknüpft ist?Wie kann ich genau sehen, was in meinem Programm verlinkt ist?

Eine Möglichkeit zu beweisen, dass ich nicht statisch oder dynamisch mit einem anderen spezifischen Code verknüpfe.

+0

Haben Sie sich ldd angesehen? Ich denke, das ist was du willst, aber ich bin mir nicht sicher, ob ich die Frage verstehe. – TWhelan

+0

Ja, das ist eine Art von was ich suche, aber es tut nur .so Dateien/dynamische Verknüpfung, oder? –

+0

http://stackoverflow.com/questions/1124571/get-list-of-static-libraries-use-in-a-executable hat einen Vorschlag (nm verwenden), aber das ist nicht sehr nützlich. Wenn Sie es wirklich beweisen möchten, könnten Sie versuchen, in einer 'sauberen' Umgebung ohne den 'spezifischen Code' zu kompilieren/verknüpfen/laufen. – TWhelan

Antwort

2

Wie in den Kommentaren - für die dynamische Verknüpfung, haben Sie LDD.

Aber wenn man die statisch gelinkte Bibliotheken sehen wollen, es auf Ihrem Setup schwierig und hängt bekommt: wenn Sie den Quellcode, um die akzeptierte Antwort besitzen:

ist Ihr Freund.

Wenn nicht, müssen Sie zumindest wissen, bei welchen Bibliotheken der Verdacht besteht, dass sie statisch verknüpft sind.

Wenn Sie eine große Codebasis haben und rechtliche Beweise liefern müssen, können Sie eine Software wie black duck verwenden, die prüft, ob ein Entwickler Quellcode mit nicht übereinstimmenden Lizenzen kopiert hat.