gcc and g++分别是GNU的c & c++编译器。很多的人都以为gcc只能编译.c后缀的文件,gcc把它当成c程序, 而对与.cpp文件,g++会把它当作c++程序。
在编译阶段,g++会调用gcc,对与c++代码,二者是一样的。因为 gcc命令不会自动和c++程序使用的库连接。所以通常就用g++来完成。
gcc和g++的编译过程分为四步:
现在简单的介绍下g++编译main.cpp为例:
预处理:g++ -E main.cpp -o main.i 使用-E选项来生成.i目标。(主要是做头文件的展开和宏定义的展开)
编译: g++ -S main.i -o main.s使用-S选择来生成.s目标文件.(主要是将.i文件编译成汇编文件)
汇编: g++ -c main.s -o main.o 使用-c选择来生成.o目标文件.(主要是将.s文件汇编成一个二进制文件)
链接: g++ main.o -o main主要是将.o文件链接成可执行文件.
我们也可以一条命令就可以完成:
g++ main.cpp -o main
以上就是简单的叙述了g++在编译。cpp文件的简单过程。
当然g++的功能远不只这样,大家可以看看g++的选项。
下面来说一个用的比较多的选项-Wall.
-Wall 编译会输出一些警告和错误信息。对于初学者还是很有必要的。
当然在实际的项目中不可能就只有一个.cpp就能完成整个项目的开发。
如果项目中有多个cpp, fun.cpp, main.cpp。
下面用一条语句也可以完成:g++ fun.cpp main.cpp -o main
当然我们也可以分开来执行:
g++ -Wall -c fun.cpp -o fun.o
g++ -Wall -c main.cpp -o main.o
g++ -Wall fun.o main.o -o main
分开编译的好处就在于 如果你只修改了fun.cpp,那么只需要重新编译fun.cpp既可,在大的项目里面,就可以节约很多的编译时间.