对于我的以下代码:
/* 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文件链接。
答案 0 :(得分:4)
使用命令行两次提供相同的源文件。
这将导致从a2.c
编译2个临时文件。
链接器尝试同时包含两个.o
文件,并且文件中的所有符号都重复。
只需将命令行更改为此:
gcc -Wall -Werror -std=c99 a2.c -o a2