как связать статическую библиотеку в динамическую библиотеку в gcc

Под gcc (g ++), я скомпилировал помехи .a (назовите его some_static_lib.a) библиотека. Я хочу связаться (который является правильной фразой?) это .a файл в другую динамическую библиотеку (называют его libsomeDyn.so) то, что я создаю. Хотя .so компиляции, я не вижу содержание .a под .so использование nm команда:

/usr/bin/g ++-fPIC-g-O2 - Стена-Werror - передают-march=pentium3-mtune=prescott по каналу - MD-D_FILE_OFFSET_BITS=64-DLINUX-D_GNU_SOURCE-D_THREAD_SAFE-I../../../../../../../../-I../../../../../../../..//библиотеки-Wl,-rpath,/usr/lib-o libsomeDyn.so some.o another.o some_static_lib.a - совместно использовал-Wl-x-Wl,-soname, libsomeDyn.so

Я не вижу функций под some_static_lib.a под libsomeDyn.so. Что я делаю неправильно?

35
задан bob 2 April 2013 в 10:09
поделиться

1 ответ

Статические библиотеки имеют особые правила, когда дело доходит до компоновки. Объект из статической библиотеки будет добавлен в двоичный файл только в том случае, если объект предоставляет неразрешенный символ.

В Linux это поведение можно изменить с помощью параметра компоновщика - весь архив :

g++ -Wl,--whole-archive some_static_lib.a -Wl,--no-whole-archive
44
ответ дан 27 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: