как сделать разделяемую библиотеку из статической библиотеки под Ubuntu с помощью GCC - PullRequest
3 голосов
/ 15 апреля 2010

У меня есть статическая библиотека libsrp.a, я хочу создать из нее общую библиотеку libsrp.so, которая содержит все символы. подскажите пожалуйста как сделать .so под убунту.

спасибо

Ответы [ 2 ]

3 голосов
/ 15 апреля 2010

Перекомпилируйте объектные файлы, содержащиеся в libsrp.a, с флагом, чтобы создать независимый от позиции код (fpic), как в

gcc -fpic -c foo.c
gcc -fpic -c bar.c

Теперь вы можете объединить foo.o и bar.o в общую библиотеку, как в

gcc -shared -o libshared.so foo.o bar.o
2 голосов
/ 17 апреля 2010

Используйте флаг --whole-archive:

gcc -shared -o libsrp.so -Wl,--whole-archive -lsrp -Wl,--no-whole-archive

со страницы руководства ld (мой акцент):

- все-архив Для каждого архива, упомянутого в командной строке после параметра --whole-archive, включайте каждый объектный файл в архиве в ссылку, а не ищите в архиве требуемые объектные файлы. Обычно используется для преобразования архивного файла в общую библиотеку, заставляя каждый объект включаться в результирующую общую библиотеку. Этот параметр можно использовать более одного раза.

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