Есть ли способ прочитать содержимое .so файла без загрузки?

Есть ли способ прочитать содержимое файла .SO (общие объекты), не загружая его?

Мой сценарий использования:

  1. У меня есть .so файл на окнах. Мне нужно запросить некоторые методы, присутствуют ли они в .so или нет.
  2. Чтобы знать все классы в файле .so.
  3. По заданному имени класса нужно найти все методы этого класса.

Примечание: я могу легко сделать эти вещи на DLL. Также я работаю над окнами, поэтому я не могу загрузить файл .SO.

Спасибо

7

Решение

Для экрана: readelf -a <file>

Чтобы сохранить вывод, поместите его в файл. Например, я изучаю модуль Python RPi.GPIO на Raspberry Pi, который хранится в /usr/lib/python2.7/dist-packages/RPi, поэтому я запускаю:
readelf -a GPIO.so > ~/gpio.so.out

7

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

Вы можете прочитать эти файлы с помощью инструментов, включенных в GNU binutils. Хотя GNU binutils обычно устанавливается в системах Linux, это не относится к Windows. Тем не менее, они работают в Cygwin или MinGW под Windows.

Ресурсы:

  1. Binutils: http://www.gnu.org/software/binutils/
  2. Cygwin: http://www.cygwin.com/
  3. MinGW: http://www.mingw.org/
  4. MinGW Binutils: http://sourceforge.net/projects/mingw/files/MinGW/Base/binutils/

Обратите внимание, что с MinGW (3.) вам не нужен Cygwin (2.) и вы сами компилируете Binutils (1.). Binutils включен в MinGW (3.), но вы также можете попробовать загрузить только часть Binutils из MinGW (4.).

Как пользоваться nm а также readelf Для получения информации здесь поясняется:
Как мне перечислить символы в .so файле

Если вы хотите включить эту функцию в программу на C ++, вы можете включить исходный код этих инструментов (остерегаться лицензии!) Или вызвать их из своей программы. Возможно, вам понадобится среда Cygwin для компиляции исходного кода под Windows.

4

да, необходимо решение для ОС Windows. Я использовал инструмент nm.exe, присутствующий в инструментах ndk в Android SDK / ndk.

я сбросил вывод nm.exe в какой-то файл, а затем с помощью регулярного выражения извлек из него все классы и методы.

1
По вопросам рекламы [email protected]