新しいubuntu 12.10サーバーでchironfsをコンパイルしたところ、次のエラーが発生しました。
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 が欠落していることを示していますが、ヒューズ エラーはちょっと奇妙な原因です -lfuse が使用されています
ここで、オブジェクト ファイルの後にライブラリを配置することを提案するソリューションを見つけました
だから私は -lfuse を削除し、行の最後に -lfuse -lpthread を追加しました
今ではエラーなしでコンパイルされ、これが本来あるべき方法のようです: オブジェクトファイルの後のライブラリ
私の質問は: パラメータの順序が gcc/ld に関連するのはなぜですか? gcc は他のすべてのアプリケーションと同じようにパラメーターを解析するだけで、必要なパラメーターを ld などに転送できると思いました
一般的に: gcc パラメーターの順序付けに関する事実やヒント、およびこの方法が必要な理由についての背景情報を知っている人はいますか?
ありがとう