Мы имеем ситуацию, когда (упрощенный):Есть ли способ увидеть функции внутри архива C/C++ (.a)?
test()
существует вsource.c
source.c
компилируетobject.o
object.o
компонуется в архивarchive.a
archive.a
компилируется в окончательномbinary
Мы пытаемся изменить имя test()
на что-то другое. Но шаг ссылки в (4) говорит, что новая сигнатура метода не существует. Используя gobjdump
, мы видим, что новый переименованный метод существует в object.o
(он находится в том же SECT, что и другие методы и не является UND).
Мы можем с уверенностью видеть, что object.o
существует в archive.a
. Однако мы не уверены (из-за сложной системы сборки), что archive.a
содержит метод.
TL; DR: Есть ли способ увидеть внутри архивного файла и перечислить в нем функции конкретного двоичного объекта?
Это C, или C++? C не имеет «методов» и «объектов» в этом отношении. – unwind
Это на самом деле библиотека с открытым исходным кодом методов C, которые помещаются в архив, но скомпилированы в проект на C++. – JoshJ
Вы можете использовать инструмент 'nm', чтобы отобразить все функции, найденные в библиотеке. –