Я создаю библиотеку общих объектов, которая будет LD_PRELOADed с моей программой. В этой общей библиотеке я также хочу использовать некоторые переменные из моей программы. Каков способ объявления таких переменных. Обратите внимание, что общая библиотека объектов компилируется отдельно от моей программы.Как обмениваться переменной в библиотеке общих объектов
5
A
ответ
2
Да. Вы должны связать свою программу с --export-dynamic
, чтобы таблица символов программы была доступна для открытых библиотек. Если вы хотите точно контролировать, какие символы доступны и используя libtool
для связывания, вы можете использовать параметры, такие как -export-symbols-regex
, чтобы указать, какие из них доступны. Если символы, требуемые библиотекой, недоступны, когда программа загружается, она не работает с неопределенным символом. Некоторые платформы требуют немного разных флагов ссылок (особенно Windows). Рассмотрите возможность использования libtool
, чтобы сделать это проще, если вы еще этого не сделали.