Для статической библиотеки (.a-файл), как отобразить зависимости этого модуля на уровне модуля?Как указать зависимости статической библиотеки c/C++?
Я знаю, что для общей библиотеки (.so), мы можем использовать objdump или readelf сделать это:
objdump -p test.so
или
readelf -d test.so
я могу получить что-то вроде
НУЖНО libOne.so
ТРЕБУЕТСЯ libc.so.6
Но для статической библиотеки, я могу только получить зависимости в символ уровня, например, запустив
objdump -T test.a
я получить некоторые вещи как:
00000000 DF UND 00000000 QByteArray :: середине (интермедиат, ИНТ) константный
00000000 DF UND 00000000 QUrl :: fromEncoded (QByteArray Const &)
00000000 DF UND 00000000 QFileInfo :: Filename() Const
Но мне нужна информация в модуле уровня, Кто-нибудь знает, как получить эту информацию?
Я бы сказал, причина в том, что статическая библиотека не связана ** **. Поэтому никто в цепочке сборки до сих пор не отвечал за добавление к нему такой информации. –
@Jan Smrčina @ Какой-то программист-чувак Но как можно создать статическую библиотеку, не зная эту информацию? Например, библиотека A использует функцию, определенную в другой библиотеке B. Если мы не добавим что-то вроде '#include" B.h "', может ли быть создано A? В этом случае мы можем сказать, что А зависит от В? – bagebb
@bagebb Как и любой другой файл объекта. Команда 'ar', используемая для создания статических библиотек, является простой и очень простой * ARchiver *. Для статических библиотек вам нужно следить за зависимостями и напрямую связываться с ними. Это не что-то, на что способен компоновщик, все, что он делает, - это в основном извлечение объектных файлов и связь с ними. –