У меня есть исполняемый файл, который загружает .so
плагинов.
Исполняемый файл связан с -rdynamic
, поэтому возможен обратный вызов символа.
У меня есть статическая библиотека, которая включена в исполняемый файл. У этого есть функция, названная BLAH_hello()
в .a
Статическая библиотека не используется в исполняемом файле. т.е. в исполняемом коде нет вызовов BLAH_hello()
.
Однако у .so
есть вызовы на BLAH_hello()
.
Когда я dlopen()
.so
, он жалуется на неопределенный символ BLAH_hello()
Если , я включаю фиктивный вызов BLAH_hello()
в исполняемый код, например BLAH_hello(NULL);
. Символ включается в исполняемый файл, и когда загружается .so
, он находит символ.
Я уверен, что мог бы также связать .so
с .a
, но несколько динамически загруженных .so
используют вызов BLAH_hello
, поэтому имеет смысл иметь его в исполняемом файле. Меня также беспокоит конфликт символов, если я связываю библиотеку с каждым .so
.
Так что мне интересно, как получить символы .a
в исполняемый файл, даже если они на самом деле не используются в исполняемом файле?