Как использовать функции файла .so (общий объект), если отсутствуют соответствующие заголовки

Теперь у меня есть файл .so, но нет связанных заголовков.
Есть ли рекомендуемые методы для анализа и использования функций внутри библиотеки?

Хорошо, я думаю, что это может быть две части:
«как загрузить библиотеку» и «как использовать библиотеку».

Сначала я попытался использовать dlopen, чтобы загрузить его,
затем компиляция прошла, но при выполнении произошла ошибка сегментации.

Я попытался с системной встроенной библиотекой вместо этого, и все в порядке
поэтому я подумал, может, мне следует подключить GDB к .so во время выполнения, чтобы увидеть, что случилось?

Но перед этим я использую nm, чтобы перечислить имена функций общего объекта,
это работает хорошо, поэтому я думаю, что общий объект не был сломан.

Или, может быть, я должен попытаться восстановить заголовок из результатов NM?
Это возможно? как?

следовать за:

Я все еще программировал с помощью dlopen () и пытался скомпилировать с -L [library_search_path] -l [имя_библиотеки]

напр .: -L / home / test -ltest

и получил следующие ошибки:

/home/test/libtest.so: undefined reference to「SSL_connect」
/home/test/libtest.so: undefined reference to「TLSv1_client_method」
/home/test/libtest.so: undefined reference to「SSL_CTX_set_verify」
/home/test/libtest.so: undefined reference to「SSL_CTX_check_private_key」
/home/test/libtest.so: undefined reference to「SSL_get_peer_certificate」

Я обнаружил, что OpenSSL еще не установлен.
После завершения установки я снова скомпилировал с дополнительным -lssl -lcrypto,
затем компиляция работ, но выполнение не удалось со следующими:

ошибка при загрузке общих библиотек: libssl.so.1.0.0: не удается открыть файл общего объекта: нет такого файла или каталога

Исполняемый файл не может найти установленную libssl,
поэтому я добавляю флаги с -Wl,-rpath,/usr/local/lib,
Ну, библиотека теперь может быть загружена 🙂

Теперь я понимаю, как использовать dlsym () с функциями преобразования имен …

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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