最近在看RAM下的汇编以及优化。顺便看了下用gcc编译的过程。
用helloworld.c 来说明问题;
1.预编译:
gcc -E helloworld.c -o helloworld.i
在这一步之后,生成的.i文件会比你的.c文件大很多。里面包含着你的.c中包含的头文件的内容,以及一些预处理代码等。(必须使用大写的E才行)
2.编译:
gcc -S helloworld.i -o helloworld.s
在这一步之后,看到你的代码又变小很多了相比.i文件来说。生成的了汇编文件。(必须大写S)
3.汇编:
gcc -c helloworld.s -o helloworld.o
这一步之后生成了ELF格式的目标代码。(必须小写c)
4.链接:
gcc helloworld.o -o helloworld
这一步生成了可执行的程序。
说明:-o 表示生成的文件名,否则会默认输出a.out。