读书人

gcc 链接时对static int main 处置

发布时间: 2013-01-05 15:20:39 作者: rapoo

gcc 链接时对static int main 处理
今天无意中在main函数前面加入static
#include <stdio.h>
static int main(int argc, char ** argv )

{
printf("Hello world!\n");
return 0;
}
最后发现链接不行。无法生成可执行文件。
[PPiou@localhost test]$ gcc hello.c
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

去掉static 修饰就ok。
这个原因是什么?从链接角度来解释一下。或者告诉我通过其他的工具去查看问题所在。谢谢!
[解决办法]
前面修饰static的话,main函数只是在本文件可见,编译器并不会到处main这个符号,所以链接的时候会找不到main函数。
[解决办法]
加static之后 main就没有外部链接属性了。
于是链接器就找不到main
[解决办法]
google static 在函数前的意义

读书人网 >C语言

热点推荐