У нас есть ситуация, когда (упрощенно):
test()
существует в source.c
source.c
компилируется в object.o
object.o
попадает в архив archive.a
archive.a
попадает в финал binary
Мы пытаемся изменить имя test()
к чему-то еще. Но шаг связывания в (4) говорит, что подпись нового метода не существует. С помощью gobjdump
мы видим наверняка, что новый переименованный метод существует в object.o
(он находится в том же разделе, что и другие методы, и не является UND).
Мы можем убедиться, что object.o
существует в archive.a
, Однако мы не уверены (из-за сложной системы сборки), что archive.a
содержит метод.
TL; DR: есть ли способ просмотреть внутри архивного файла и перечислить функции конкретного двоичного объекта внутри него?
использование nm
, Предполагая Linux, вот справочная страница.