Под 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
. Что я делаю неправильно?
Статические библиотеки имеют особые правила, когда дело доходит до компоновки. Объект из статической библиотеки будет добавлен в двоичный файл только в том случае, если объект предоставляет неразрешенный символ.
В Linux это поведение можно изменить с помощью параметра компоновщика - весь архив
:
g++ -Wl,--whole-archive some_static_lib.a -Wl,--no-whole-archive