2008-09-06 13 views
0

Ich habe ein geerbtes Projekt, das ein Build-Skript (nicht make) verwendet, um das Projekt mit verschiedenen Bibliotheken zu erstellen und zu verknüpfen.Gibt es eine Möglichkeit, eine Abhängigkeitsstruktur von einer Buildskriptausgabe zu analysieren?

Wenn es einen Build durchführt, möchte ich die Build-Ausgabe analysieren, um festzustellen, was und wo die tatsächlichen statischen Bibliotheken in die endgültige ausführbare Datei verknüpft sind und woher kommen sie.

Das Skript kompiliert und verlinkt mit GNU-Tools.

Antwort

0

Statische Bibliotheken, die das Leben in dieser Hinsicht erschweren. Im Falle dynamischer Bibliotheken hätten Sie einfach ldd für die resultierende ausführbare Datei verwenden und damit fertig werden können. Die beste Wette wäre eine Art Konfigurationsdatei. Alternativ könnten Sie versuchen, nach -l Argumente zu gcc/ld zu suchen. Diese werden verwendet, um Bibliotheken zu spezifizieren. Sie könnten ein Skript schreiben, um es aus der Ausgabe zu extrahieren, obwohl ich vermute, dass Sie es manuell tun müssen, denn wenn Sie wissen, wonach das Skript suchen soll, kennen Sie die Antwort wahrscheinlich schon.

0

Es ist wahrscheinlich möglich, etwas Nützliches unter Verwendung z.B. Perl, aber Sie müssten mehr Details angeben. Auf der anderen Seite könnte es einfacher sein, das Skript einfach zu analysieren ...

1

Sie könnten versuchen, das nm Werkzeug zu verwenden. Bei den richtigen Optionen wird eine Binärdatei (Archiv oder verknüpftes Bild) angezeigt und Sie erfahren, welche Objekte darin verknüpft sind.

Eigentlich ist hier ein Einzeiler ich bei der Arbeit verwenden:

#!/bin/sh 

nm -Ag $* | sed 's/^.*\/\(.*\.a\):/\1/' | sort -k 3 | grep -v ' U ' 

die Schuldigen für undefinierte Symbole zu finden. Zieh einfach den letzten Grep-Ausdruck ab und es sollte dir ziemlich genau geben, was du willst.