Linux下编译链接出错
现在在Ubuntu16.04版本下,64位系统的虚拟机上下有两段很简单的代码
//file1.c
#include<stdio.h>
void main()
{
printf("this is file1.c");
fun();
}
//file2.c
#include<stdio.h>
void fun(void)
{
printf("this is file2.c");
}
然后链接编译出现问题,问题描述如下:
$gcc -c file1.c file2.c
$gcc -O file file1.o file2.o(o大写)
运行成功,生成可执行文件,并正确运行,但是:
$gcc -c file1.c file2.c
$gcc -o file file1.o file2.o(o小写)
报错无法生成可执行文件错误如下:
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
现在更奇怪的的来了,同事有装同样版本的Ubuntu,问题刚好和我相反。
即是在上面链接的时候小写O能生成可执行文件,成功运行,但是大写的时候报错。
我知道Linux的命令是分大小写的,但为什么会出现这样的问题,求大神指教,谢谢。