C(c ++ではない)コードをコンパイルしているときに、リンク時にエラーが発生します。特定の識別子が複数の場所で定義されていますが、以下に示すように、出力は非常にわかりにくいものです。
gccからより良いメッセージを取得して、どのファイルが複数の定義の原因であるかを確認する方法はありますか?
/tmp/cc8kgsLE.o:(.rodata+0x0): multiple definition of `PR_SZ'
/tmp/ccDfv6U4.o:(.rodata+0x0): first defined here
/tmp/cc8kgsLE.o:(.rodata+0x8): multiple definition of `PR_SEC_SZ'
/tmp/ccDfv6U4.o:(.rodata+0x8): first defined here
/tmp/cc8kgsLE.o:(.rodata+0x10): multiple definition of `PR_NSEC_SZ'
/tmp/ccDfv6U4.o:(.rodata+0x10): first defined here
collect2: ld returned 1 exit status
更新:応答に基づいて、、、
が、およびマクロによって保護されている1つのファイルで定義されていることPR_SZ
をさらに明確にします。PR_SEC_SZ
PR_NSEC_SZ
.h
#ifndef
#define
#endif
コンパイルに関しては、私は単に次のように入力します。
gcc -Wall -I. -file1.c file2.c -o file2
アップデート: