Есть ли способ проанализировать дерево зависимостей из выходных данных сценария сборки? - PullRequest
0 голосов
/ 06 сентября 2008

У меня есть унаследованный проект, который использует скрипт сборки (не make) для сборки и связывания проекта с различными библиотеками.

Когда он выполняет сборку, я хотел бы проанализировать выходные данные сборки, чтобы определить, что и где находятся фактические статические библиотеки, связанные с конечным исполняемым файлом, и откуда они берутся.

Скрипт компилируется и связывается с помощью инструментов GNU.

Ответы [ 3 ]

1 голос
/ 07 сентября 2008

Вы можете попробовать использовать инструмент nm. При правильных настройках он будет смотреть двоичный файл (архив или связанное изображение) и сообщать вам, какие объекты были связаны с ним.

На самом деле, вот одна строчка, которую я использую на работе:

#!/bin/sh

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

чтобы найти виновных для неопределенных символов. Просто отрубите последнее выражение grep, и оно должно дать вам то, что вы хотите.

0 голосов
/ 07 сентября 2008

Возможно, что-то полезное можно сделать, например, с помощью Perl, но вы должны предоставить более подробную информацию. С другой стороны, было бы проще просто проанализировать сценарий ...

0 голосов
/ 07 сентября 2008

Статические библиотеки, которые усложняют жизнь в этом отношении. В случае динамических библиотек вы могли просто использовать ldd в результирующем исполняемом файле и покончить с этим. Лучшим вариантом будет какой-то файл конфигурации. В качестве альтернативы вы можете попытаться найти аргументы -l для gcc / ld. Они используются для указания библиотек. Вы могли бы написать скрипт для извлечения его из выходных данных, хотя я подозреваю, что вам придется делать это вручную, потому что к тому времени, когда вы узнаете, что скрипт должен искать, вы уже знаете ответ.

...