У меня есть файл .SO (обратите внимание, а не .a, а не .dylib и не .o), и мне нужно получить от него информацию о символе на OSX.Как распечатать список символов для .so-файла в OSX?
Я попытался
nm -gU lib.so
Однако, ничего не печатается.
Я не могу использовать otool, потому что это не объектный файл, а readelf не существует на OSX. Как получить информацию о символе?
Обратите внимание, что я использую этот файл .so в другом проекте, и есть информация о символе. Я могу загрузить библиотеку и ссылаться на нее. Тем не менее, мне еще предстоит найти инструмент на OSX, чтобы я мог напечатать информацию о символе.
Как спросил,
file lib.so
ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped
Каков фактический тип файла (а не расширение его файла, которое не является определяющим)? Что выводит 'файл lib.so'? Кстати, существуют различные пакеты, связанные с ELF, поддерживаемые MacPorts. Например, похоже, что пакет 'elftoolchain' включает в себя инструмент' readelf'. 'i386-elf-binutils' или' x86_64-elf-binutils' может также иметь что-то полезное. Я уверен, что другие системы пакетов имеют похожие пакеты. –
Это двоичный код ARM. Будут ли инструменты x86/x64 иметь возможность понять это? – tadman
Поскольку OSX использует двоичный формат Mach-O, а не ELF. Таким образом, утилиты, такие как 'nm' и т. Д., Не имеют отношения к форматам ELF. Также они не будут использовать один и тот же синтаксис командной строки.Я описываю, как создавать и устанавливать ['binutils'] (http://stackoverflow.com/questions/8712352/linux-mach-o-disassembler/8714142#8714142) в Linux для файлов Mach-O. Вы можете захотеть скомпилировать 'binutils' для запуска (размещения) на OSX/Darwin, но' --target' должен быть 'arm-elf' или какой-то вариант. Я не могу вспомнить конкретные архитектуры ARM, но может быть вариант сборки, который обрабатывает все от старых версий ARM до AArch64. –