我们知道编译的整个流程是:
预处理 --> 编译 --> 汇编 --> 链接
g++或gcc提供了单独进行上述子过程的途径。
gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。
(本文主要以编译C++程序的g++为演示,如果是C程序直接将给 g++改为gcc即可)
1. 预处理:生成.i的预处理文件。
只激活预处理,这个不生成文件,需要把它重定向一个输出文件。
g++ -E HelloWorld.cpp -oHelloWorld.i
2. 编译:生成.s的编译文件。
g++ -S HelloWorld.i -o HelloWorld.s
3. 汇编:生成.o的汇编文件。
g++ -c HelloWorld.s -o HelloWorld.o
4. 链接:生成链接文件。
这是最后一步,执行完后即可生成可执行文件。
g++ HelloWorld.o -o HelloWorld
习惯使用的,一步直接编译成可执行文件:
g++ HelloWorld.cpp -o HelloWorld
更多请参考:http://huobumingbai.blog.51cto.com/1196746/308526