为了解编译程序的过程--使用as、ld结果出问题
为了了解编译程序的过程,不使用gcc的“简单”式编译。使用gcc、as、ld了解编译程序的过程。
下面是试验代码
//HelloWorld.c
int main(void)
{
int a=2;
int b=34;
return (a);
}
首先:gcc -S HelloWorld.c -o HelloWorld.s //生成汇编代码。
as HelloWorld.s -o HelloWorld.o //生成机械码。
ld HelloWorld.s -o HelloWorld.o //结果:ld: warning: cannot find entry symbol _start; defaulting to 08048094,上网找了一下:as/ld是以_start为入口的,所以就出现了找不到_start的错误:cannot find entry symbol _start
解决的办法是打开main函数生成的.o文件,然后把里面的_main都改成_start,再用ld命令。
再次使用ld时不出错,但是执行生成的文件时,出现段错误!!!!!!!!!!
怎么解决?????????????????????