Kolejność parametrów gcc / g ++
Właśnie skompilowałem chironfs na moim nowym serwerze ubuntu 12.10 i otrzymałem następujący błąd:
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'
błąd pthread mówi mi, że brakuje -lpthread, ale błąd bezpiecznika jest dość dziwny, ponieważ używa się -lfuse
znalazłem rozwiązanietutaj co sugeruje umieszczanie bibliotek po plikach obiektowych
więc usunąłem -lfuse i dodałem -lfuse -lpthread na samym końcu linii
teraz kompiluje się bez błędu i wygląda na to, że tak powinno być: biblioteka po plikach obiektowych
moje pytanie brzmi: dlaczego kolejność parametrów jest odpowiednia dla gcc / ld? Myślałem, że gcc po prostu analizuje params jak każda inna aplikacja i może przekazać niezbędne parametry do ld lub innego
ogólnie: każdy zna fakty lub wskazówki dotyczące porządkowania parametrów gcc i może trochę informacji o tym, dlaczego jest to potrzebne w ten sposób?
dzięki