Я хочу использовать gcc для создания разделяемой библиотеки, но я хочу связать некоторые другие библиотеки, от которых зависит статически.Теперь, чтобы создать «стандартный» динамически связанный выходной файл, я использую
gcc -dynamiclib *.o -lfoo -lbar -o outfile
, который будет
gcc -shared *.o -lfoo -lbar -o outfile
включен для binutils ld
в системе linux.Теперь, если я хочу, чтобы libfoo и libbar были связаны статически, я могу назвать статические библиотеки напрямую
gcc -dynamiclib *.o /usr/lib/libfoo.a /usr/lib/libbar.a -o outfile
, однако, таким образом, я должен сам искать файлы библиотеки.GNU binutils ld
поддерживает это:
gcc -shared *.o -l:libfoo.a -l:libbar.a -o outfile
но Apple ld
не поддерживает.
- Есть ли способ заставить
ld
Apple самостоятельно искать статические библиотеки? - Если нет, есть ли другой способ избежать точного определения местоположения архивов,например, создание промежуточного выходного файла из объектных файлов, требующих libfoo и libbar с переключателем
-static
, и связывание этого файла с оставшимися объектными файлами для создания динамического объекта?