Да, я знаю, что это 8-летний вопрос, но мне сказали, что можно статически связываться с библиотекой общего объекта, и это было буквально лучшим ударом, когда я искал больше информации об этом.
Чтобы на самом деле продемонстрировать, что статическое связывание библиотеки общего объекта невозможно с 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
Надеюсь, это поможет.