2012-06-05 1 views
5

Я создаю библиотеку общих объектов, которая будет LD_PRELOADed с моей программой. В этой общей библиотеке я также хочу использовать некоторые переменные из моей программы. Каков способ объявления таких переменных. Обратите внимание, что общая библиотека объектов компилируется отдельно от моей программы.Как обмениваться переменной в библиотеке общих объектов

ответ

2

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