main函数和启动例程
当内核使用一个exec函数执行C程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用main函数做好准备。
我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件:
1 $ gcc -S main.c2 $ gcc -c main.s3 $ gcc main.o
-S 选项生成汇编代码, -c 选项生成目标文件,此外 -E 选项只做预处理而不编译,如果不加这些选项则 gcc 执行完整的编译步骤,直到最后链接生成可执行文件为止。gcc命令的选项图
这些选项都可以和 -o 搭配使用,给输出的文件重新命名而不使用 gcc 默认的文件名( xxx.c、 xxx.s 、 xxx.o 和 a.out ),例如 gcc main.o -o main 将 main.o 链接成可执行文件 main 。
如果我们
