g++编译C++代码的实际过程和g++常用命令选项

先写个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 ....
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值