порядок параметров gcc / g ++

Я просто скомпилировал chironfs на моем новом сервере Ubuntu 12.10 и получил следующую ошибку:

gcc  -Wall -W -Wmissing-prototypes -g -O2 -DFUSE_USE_VERSION=25 -D_FILE_OFFSET_BITS=64 -I/usr/local/include -g -O2 -lm -lfuse  -o chironfs chironfs.o chiron-conf.o chirondbg.o chironfn.o  
chironfs.o: In function `chiron_init':
/root/chironfs-1.1.1/src/chironfs.c:2000: undefined reference to `pthread_create'
chironfs.o: In function `get_rights_by_name':
/root/chironfs-1.1.1/src/chironfs.c:452: undefined reference to `fuse_get_context'

ошибка pthread говорит мне, что -lpthread отсутствует, но ошибка fuse довольно странная, потому что используется -lfuse

я нашел решениеВот который предлагает ставить библиотеки после объектных файлов

поэтому я удалил -lfuse и добавил -lfuse -lpthread в самом конце строки

теперь он компилируется без ошибок и кажется, что так и должно быть: библиотека после объектных файлов

мой вопрос: почему порядок параметров имеет значение для gcc / ld? я думал, что gcc просто разбирает параметры, как и любое другое приложение, и может переслать необходимые параметры в ld или что-то подобное.

в общем: кто-нибудь знает факты или советы по упорядочению параметров gcc и, возможно, немного справочной информации о том, зачем это нужно?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос