Самоанализ интерфейса общей библиотеки

Это вероятно из необходимости. До недавнего времени BSD-лицензированные компиляторы C были, вероятно, немногими или не близко подошли к четности функции с gcc.

От целей проекта FreeBSD:

Тот код в нашем исходном дереве, которое подпадает под Генеральную общедоступную лицензию GNU (GPL) или Стандартную общественную лицензию библиотеки (LGPL), идет с немного большим количеством присоединенных строк, хотя, по крайней мере, на стороне вынужденного доступа, а не обычного противоположного. Из-за дополнительных сложностей, которые могут развиться в коммерческом использовании программного обеспечения GPL, мы действительно, однако, предпочитаем программное обеспечение, отправленное под более расслабленным авторским правом BSD, когда это - разумная опция сделать так.

3
20.01.2013, 23:07
1 ответ

Можно получить информацию из файла ELF (исполняемый файл или библиотека) с readelf.

Похож Вы ищете экспортируемые символы, так использование:

$ readelf --dyn-syms libyourthing.so

Для функций C-типа Вы только получите имена функций, не типы аргумента или возвращаемые значения. Для функций C++ Вы доберетесь, скорректированные имена - передают вывод по каналу той команды через c++filt получить имена функций и типы аргумента (все еще никакие возвращаемые значения хотя).
(Globals также отображены в выводе с их именами и размером, но не их типом.)

Другие полезные инструменты nm и objdump которые предоставляют подобную информацию.

Я не уверен, что это поможет Вам все же. Необходимо также попробовать strace видеть, смотрит ли Python, где Вы думаете, что это. Что-то как:

$ strace -e trace=open python your_code_that_loads_your_lib.py

покажет Вам весь open вызовы, выполняемые Python - ищут Ваше название библиотеки там (будет много зарегистрировано вышеупомянутым, отфильтрует его). Каждый вызов также показывает код возврата, таким образом, Вы могли бы получить лучшее представление о том, что продолжается.

О, и удостоверьтесь, что Вы не пытаетесь загрузить библиотеку на 32 бита во время выполнения Python на 64 бита, или наоборот.

5
27.01.2020, 21:17
  • 1
    Это будет всегда помогать другому времени, я должен проверить интерфейс своей библиотеки. Вы были правы, что это не помогает мне, как сегодня вечером, но по крайней мере я вижу сто из выставленного материала boost.python. Я собираюсь проверять strace. –  Stephane Rolland 20.01.2013, 23:14

Теги

Похожие вопросы