Как предотвратить экспорт символов из статически связанной библиотеки? - PullRequest
5 голосов
/ 08 апреля 2010

Я создал общую библиотеку на Linux x86.При его создании я статически связался в openssl.OpenSSL используется только для внутреннего использования, но я вижу, что символы openssl были экспортированы.Это вызывает проблемы для других библиотек, которым нужна моя библиотека И openssl, потому что неправильный символ может быть загружен во время выполнения.Есть ли способ предотвратить экспорт всех символов openssl, когда я статически связываю их с моей общей библиотекой?

Спасибо, Майк

1 Ответ

0 голосов
/ 08 апреля 2010

Предполагая, что вы используете gcc, при связывании вашей библиотеки установите -fvisibility = hidden и в своем источнике библиотеки отметьте все функции, которые вы хотите видеть как extern. Я думаю, что это должно работать, пока openssl не объявил свои собственные функции extern.

Я думаю, что если openssl объявил некоторые символы extern, вы можете вручную принудительно скрывать символы с помощью прагм.

Есть и другие варианты. Обратитесь к документации по gcc в разделе fvisibility для полного объяснения того, что вам доступно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...