Есть ли способ увидеть функции внутри архива C / C ++ (.a)?

У нас есть ситуация, когда (упрощенно):

  1. test() существует в source.c
  2. source.c компилируется в object.o
  3. object.o попадает в архив archive.a
  4. archive.a попадает в финал binary

Мы пытаемся изменить имя test() к чему-то еще. Но шаг связывания в (4) говорит, что подпись нового метода не существует. С помощью gobjdump мы видим наверняка, что новый переименованный метод существует в object.o (он находится в том же разделе, что и другие методы, и не является UND).

Мы можем убедиться, что object.o существует в archive.a, Однако мы не уверены (из-за сложной системы сборки), что archive.a содержит метод.

TL; DR: есть ли способ просмотреть внутри архивного файла и перечислить функции конкретного двоичного объекта внутри него?

2

Решение

использование nm, Предполагая Linux, вот справочная страница.

0

Другие решения