ordem de parâmetro gcc / g ++
Acabei de compilar o chironfs no meu novo servidor Ubuntu 12,10 e recebi o seguinte erro:
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'
o erro pthread me diz que -lpthread está faltando, mas o erro do fusível é meio estranho - está sendo usado o fusível
Eu encontrei uma soluçãoAqui o que sugere colocar bibliotecas após arquivos de objetos
então eu removi -lfuse e adicionei -lfuse -lpthread no final da linha
agora ele compila sem um erro e parece que é assim que deve ser: biblioteca depois de arquivos de objetos
minha pergunta é: por que a ordem dos parâmetros é relevante para o gcc / ld? Eu pensei que o gcc apenas analisa os parâmetros como qualquer outra aplicação e pode encaminhar os parâmetros necessários para ld ou tal
em geral: alguém sabe fatos ou dicas para ordenação de parâmetros do gcc e talvez um pouco de informações básicas sobre por que isso é necessário?
obrigado