получить список статических библиотек в c / cpp из файлов .so / .o - PullRequest
0 голосов
/ 15 октября 2019

Я пытался получить статических и динамических зависимостей из файлов. У меня есть исходный код и несвязанные файлы bin. Чтобы получить все динамические зависимости, я использовал эту строку, и она сработала

readelf -d $1 | grep "NEEDED\|RPATH" | perl  -pe 's/.*\[(.*)\]/$1/

Моя проблема связана со статическими библиотеками, когда я использую команду:

nm path/to/so

Я получаю имена функций, а не файлы. Есть ли способ увидеть статические зависимости для каждого двоичного файла?

1 Ответ

1 голос
/ 15 октября 2019

Динамические библиотеки (.so) не могут иметь «статических зависимостей», поскольку они уже связаны.

Объектные файлы (.o) и статические библиотеки (.a) определяют символы, которые они экспортируют (для использованиядругие) и символы, которые они сами используют.

Вы можете перечислить символы объектных файлов с помощью команды nm. Например:

$ nm lukas.o
                 U __cxa_atexit
                 U __dso_handle
0000000000000000 V DW.ref.__gxx_personality_v0
                 U _GLOBAL_OFFSET_TABLE_
00000000000003a8 t _GLOBAL__sub_I__Z15double_from_strRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
                 U __gxx_personality_v0
00000000000001d5 T main
                 U __stack_chk_fail
                 U _Unwind_Resume

Ключевое слово U отмечает символы, которые не определены, то есть статические зависимости объектного файла.

...