Он предназначен для разрешения круговых зависимостей между несколькими библиотеками (перечисленными между -(
и -)
).
Цитирование Почему порядок, в котором библиотеки связаны, иногда вызывает ошибки в GCC? или man ld
http://linux.die.net/man/1/ld
-(
архивы -)
или --start-group
архивы --end-group
В архивах должны быть списком архивных файлов. Это могут быть явные имена файлов или параметры -l.
Поиск в указанных архивах выполняется повторно, пока не перестанут создаваться новые неопределенные ссылки. Обычно поиск в архиве выполняется только один раз в порядке, указанном в командной строке. Если символ в этом архиве необходим для разрешения неопределенного символа, на который ссылается объект в архиве, который появляется позже в командной строке, компоновщик не сможет разрешить эту ссылку. Сгруппировав архивы, все они будут подвергаться многократному поиску, пока не будут разрешены все возможные ссылки.
Использование этой опции требует значительных затрат производительности. Лучше всего использовать его только тогда, когда есть неизбежные циклические ссылки между двумя или более архивами.
Итак, библиотеки внутри группы можно искать несколько раз на предмет новых символов, и вам не нужны уродливые конструкции вроде -llib1 -llib2 -llib1
Архив PS означает в основном статическую библиотеку ( *.a
файлы)