Передача комментариев в ответ.
Указание операций -l
и -L
при компиляции в объектные файлы не имеет значения. Некоторые версии G CC предупреждают об аргументах, которые не будут использоваться, поскольку они являются аргументами времени соединения, и связывание не будет использоваться, если вы включите флаг -c
.
ar
Команда не знает, что делать с аргументами C компилятора -l
и -L
(она может иметь свое собственное использование для флагов; одна версия ar
принимает, но игнорирует -l
).
Итак, вы должны указать зависимости при связывании с библиотекой stati c. Так было с начала 70-х годов - этот аспект еще не изменился. Совместно используемые библиотеки могут быть построены с информацией о зависимостях, но не могут быть библиотеками stati c.
Насколько я понимаю, мне нужно собрать общую библиотеку и связать ее в состоянии c, верно?
Нет. Вам либо нужно собрать и связать разделяемую библиотеку как разделяемую библиотеку, либо принять, что использование библиотеки stati c означает, что при использовании этой библиотеки вам потребуется указывать другие библиотеки в командной строке. Существуют системы, которые помогают управлять такой информацией; pkg-config
является одним из таких. AFAIK, вы не можете связать совместно используемую библиотеку «stati c way».