Да, я знаю, что это 6-летний вопрос.Мне сказали, что можно статически связываться с библиотекой общего объекта, но я также обнаружил, что это не так.
Фактически продемонстрировать, что статическое связывание библиотеки разделяемых объектов невозможно с ld
(компоновщик gcc
), используйте следующую команду gcc
:
gcc -o executablename objectname.o -Wl,-Bstatic -l:libnamespec.so
(Конечно, вам придется скомпилировать objectname.o
из sourcename.c
, и выВероятно, вам следует также создать собственную библиотеку разделяемых объектов. Если вы это сделаете, используйте -Wl,--library-path,.
, чтобы ld мог найти вашу библиотеку в локальном каталоге.)
Фактическая ошибка, которую вы получаете:
/usr/bin/ld: attempted static link of dynamic object `libnamespec.so'
collect2: error: ld returned 1 exit status
Очевидно, что попытка вытащить объект из библиотеки разделяемых объектов - это то, о чем ld
будет препятствовать.
Были некоторые предложения здесь , но мой интерес к этому вопросу был чисто академическим.
Надеюсь, это поможет.