У меня есть куча .a
файлов, процесс генерации которых не контролируется мной, а также их источники. Когда я использую их для связи, я хочу знать их зависимости (libA.a
зависит от libB.a
, если есть некоторый символ не определен в libA.a
но определяется в libB.a
), так что я могу поставить их в правильном порядке, в командной строке ld
/gcc
.Учитывая две статические библиотеки Linux, как определить, зависит ли друг от друга?
Я не хочу заниматься связыванием (т. Е. Указать эти библиотеки дважды), потому что я хочу сохранить эти зависимости в файле BUILD
bazel, поэтому я хочу знать точную зависимость.
Интересно, если есть какой-то инструмент командной строки, учитывая libA.a
и libB.a
, можно сказать, зависит ли libA.a
на libB.a
? Если этого не происходит, как написать такой скрипт?
Примечание: мое определение для зависит от не может быть на 100% точным. Сообщите мне, есть ли другие типы зависимостей, кроме определенных/неопределенных символов.
Самый простой способ обработать вывод nm libA.a
и nm libB.a
и искать U
символов, но есть много типов символов, перечисленных в man nm
, каждый из них имеет разные семантические, поэтому я забочусь я мог бы пропустить некоторые, если я используйте такой упрощенный подход.
статические библиотеки не зависят от какого-либо другого Lib в окончательном. –
@IporSircer, они не имеют зависимости, закодированной в формате файла, например '.so', но у них есть зависимости. Если 'libA.a' зависит от' libB.a', то в 'ld' командной строке' libA.a' следует поместить перед 'libB.a', из-за того, как работает' ld'. –