Извлечение имен функций из статической библиотеки - PullRequest
15 голосов
/ 26 апреля 2010

У меня есть статическая библиотека static_library.a

Как перечислить реализованные там функции и методы. или хотя бы как посмотреть реализована конкретная функция 'FUNCTION_NAME'?

Ответы [ 3 ]

31 голосов
/ 26 апреля 2010

Запись

nm static_library.a

Это дает вам полный список символов в библиотеке.

13 голосов
/ 26 апреля 2010

Используйте nm <library>, как указано.

Если это библиотека, построенная из C ++, вы должны использовать опцию nm --demangle, чтобы вернуть исходные имена символов, а не их "искаженные" версии.

1 голос
/ 07 апреля 2019

Команды nm предоставляют информацию о символах, используемых в объектном файле или исполняемом файле.

$ nm <object file or executable name>

Вывод выглядит как

libObjCUtils.a(GFICClassA.o):
0000000000000000 t +[GFICClassA GFICclassMethod1::]
00000000000001d0 t -[GFICClassA GFICGlobalPropertyNSString1]
00000000000000b0 t -[GFICClassA GFICinstanceMethod1::]

Вы можете найти образцы здесь

Информация по умолчанию, которую предоставляет команда nm:

  • Виртуальный адрес символа
  • Символ, который изображает тип символа. Если символ в нижнем регистре, то символ является локальным, но если символ в верхнем регистре, то символ является внешним
  • Название символа

Символы, обозначающие тип символа, описывают:

  • A: Глобальный абсолютный символ.
  • a: Локальный абсолютный символ.
  • B: глобальный символ bss.
  • b: местный символ bss.
  • D: Глобальный символ данных.
  • d: локальный символ данных.
  • f: символ имени исходного файла.
  • L: Глобальный локальный символ потока (TLS).
  • l: Статический локальный символ потока (TLS).
  • T: глобальный текстовый символ.
  • t: локальный текстовый символ.
  • U: неопределенный символ.

Подробнее здесь

...