Извлечение имен функций из статической библиотеки

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

Как перечислять функции и методы, реализованные там. или, по крайней мере, как искать, существует ли конкретная функция "FUNCTION_NAME"?

Ответ 1

Напишите

nm static_library.a

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

Ответ 2

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

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

Ответ 3

Команды 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: Глобальный абсолютный символ.
  • а: локальный абсолютный символ
  • B: Глобальный символ bss.
  • b: локальный символ bss
  • D: Глобальный символ данных.
  • d: локальный символ данных.
  • f: символ имени исходного файла.
  • L: Глобальный локальный символ потока (TLS).
  • l: Статический локальный символ потока (TLS).
  • Т: Глобальный текстовый символ.
  • t: локальный текстовый символ.
  • U: неопределенный символ.

Узнайте больше здесь