在编译 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
更新:根据回复,我进一步澄清
PR_SZ
, PR_SEC_SZ
,PR_NSEC_SZ
是在一个文件中定义的.h
, 该文件受#ifndef
,#define
和#endif
宏保护..
在编译方面,我只需键入:
gcc -Wall -I. -file1.c file2.c -o file2
更新:
除了响应之外,我发现以下链接相关的 全局常量没有使用#define