Как связать статические библиотеки (архивы) с пустой динамической библиотекой с помощью gcc4 - PullRequest
0 голосов
/ 08 июня 2010

Приветствую всех!

Я использую gcc в Linux для создания общей библиотеки. В самой библиотеке нет кода, но есть ссылки на несколько статических библиотек (архивов), также созданных с использованием gcc. Мне нужно экспортировать символы статических библиотек через мою общую библиотеку. Что происходит, так это то, что результирующая разделяемая библиотека слишком мала и на самом деле не содержит никаких символов, предоставляемых статическими библиотеками, упомянутыми выше. Я также попытался с картой экспортированных символов, но это не помогло вообще. Кто-нибудь из вас может предложить решение?

10x заранее

1 Ответ

3 голосов
/ 08 июня 2010

Вам нужна опция компоновщика --whole-archive, чтобы включить все статические архивы:

gcc -shared -o libwhatever.so -Wl,--whole-archive -lstatic -Wl,--no-whole-archive

-Wl необходим, потому что --whole-archive является опцией компоновщика.

Чтобы сделать это, код в libstatic.a должен быть правильно скомпилирован для использования в общем объекте (т. Е. С -fpic на платформах, которым это требуется).

...