先写个c++代码
vim test.cpp
#include<iostream>
using namespace std;
int main(int argc,char **argv)
{
cout<<"This is a cppfile!"<<endl;
return 0;
}
最简单的方式,我们编译这个代码只需要一条命令
g++ test.cpp -o test
实际是经过以下四步编译的
预编译->编译->汇编->链接
1、预编译:(预处理),主要处理在源代码文件中的“#”开头的预编译指令,如宏定义,#include指令等
# -E选项指示编译器仅进行预处理
g++ -E test.cpp -o test.i
2、编译:把预处理完成的文件进行一系列分析和优化,生成相应的汇编代码文件
g++ -S test.i -o test.s
3、汇编:将汇编代码转变成二进制文件
g++ -c test.s -o test.o
4、链接:将二进制文件链接成一个可执行文件,把分散的数据和代码收集并合并成一个单一的可加载、可执行的文件,链接可以发生在代码静态编译、程序被加载时以及程序执行时。链接过程主要工作是符号解析和重定位
g++ test.o -o test
2、g++ 参数选项
-O[n]
[-O1] [-O2] [-O3] #三种不同优化等级
一般 `-O2`即可,对代码进行优化
g++ test.cpp -O2 -o test
-Wall
#打印警告信息
g++ -Wall test.cpp
-std=c++11
#使用c++11标准
g++ -std=c++11 test.cpp
-o
#指定输出文件名
g++ test.cpp -o test
-l或-L
-l #在/lib和/usr/lib和/usr/local/lib依次查找库文件
g++ -lglog test.cpp
-L #自己定义位置
g++ -L/home/wfq/MyProjects -lmytest test.cpp
-I
#一般不用,在/usr/include
g++ -I/myinclude test.cpp
-D
#定义宏(DEBUG)
g++ -DDEBUG ....