Разрешение символов в общем объекте в исполняемый файл
Как я могу создать исполняемый файл, который загружает общий объект динамически и разрешает его неопределенные символы в сам исполняемый файл? В линуксе
Например, общий объект имеет
extern int a;
void f() { a=1; }
и исполняемый файл имеет
int a;
Я хотел бы позвонить f()
из исполняемого файла и имеют значение a
изменилось.
Благодарю.
1 ответ
От dlopen
справочная страница:
Внешние ссылки в библиотеке разрешаются с использованием библиотек в списке зависимостей этой библиотеки и любых других библиотек, ранее открытых с флагом RTLD_GLOBAL. Если исполняемый файл был связан с флагом "-rdynamic" (или, как синоним, "--export-dynamic"), то глобальные символы в исполняемом файле также будут использоваться для разрешения ссылок в динамически загружаемой библиотеке.
Итак, перекомпилируем ваше основное приложение с -rdynamic
должно помочь