»main«的乘法定义将无法编译

时间:2019-10-14 10:49:37

标签: c

对于我的以下代码:

/* Comment */

#include <stdio.h>
#include <stdlib.h>

int main(void) {

   printf("Hello World\n");

   return EXIT_SUCCESS;

}

尝试编译后收到以下错误消息:

/tmp/ccWMTR28.o: In Function »main«:
a2.c:(.text+0x0): multiply definition of »main«
/tmp/ccsLpnIP.o:a2.c:(.text+0x0): first here defined
collect2: error: ld returned 1 exit status

我输入

gcc /Documents a2.c -Wall -Werror -std=c99 a2.c -o a2

编译文件。我没有将其与另一个.c文件链接。

1 个答案:

答案 0 :(得分:4)

使用命令行两次提供相同的源文件。
这将导致从a2.c编译2个临时文件。
链接器尝试同时包含两个.o文件,并且文件中的所有符号都重复。

只需将命令行更改为此:

gcc -Wall -Werror -std=c99 a2.c -o a2