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