orden de los parámetros de gcc / g ++

Acabo de compilar chironfs en mi nuevo servidor ubuntu 12.10 y obtuve el siguiente error:

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'

el error pthread me dice que falta -lpthread, pero el error del fusible es un poco raro porque se está usando -lfuse

encontré una soluciónaquí Lo que sugiere poner bibliotecas después de archivos de objetos.

así que eliminé -lfuse y agregué -lfuse -lpthread al final de la línea

ahora se compila sin un error y parece que esta es la forma en que debería ser: biblioteca después de los archivos de objetos

mi pregunta es: ¿por qué el orden de los parámetros es relevante para gcc / ld? yo pensé que gcc simplemente analiza los parámetros como cualquier otra aplicación y puedo enviar los parámetros necesarios a ld o similares

en general: ¿alguien conoce hechos o consejos para ordenar parámetros de gcc y quizás un poco de información básica sobre por qué se necesita de esta manera?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta