g++编译


总体过程


gcc 与 g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候,总共需要4步:

  1. 预处理,生成 .i 的文件[预处理器cpp]
g++ -i xxx.cpp      //  xxx.i
  1. 将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs]
g++ -s xxx.i      // xxx.s
  1. 有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as]
g++ -c xxx.s      //  xx.o
  1. 连接目标代码, 生成可执行程序 [链接器ld]
g++ -o xxx xxx.cpp    //xxx.exe

其他编译参数

调试

  1. -g 编译带调试信息的可执行文件
  2. -O[n] 优化源代码(O大写)
  3. -l和 -L 指定库文件 | 指定库文件路径
# -l参数(小写)就是用来指定程序要链接的库,-l参数紧接着就是库名
# 在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接

# 举例-l链接glog库 
g++ -lglog test.cpp


# 如果库文件没放在上面三个目录里(及不在lib),需要使用-L参数(大写)指定库文件所在目录
# -L参数跟着的是库文件所在的目录名

# 举例-L链接mytest库,libmytest.so在/home/bing/mytestlibfolder目录下
g++ -L/home/bing/mytestlibfolder -lmytest test.cpp
  1. -I (大写i) 指定头文件搜索目录
# -I 
# /usr/include目录一般是不用指定的,gcc知道去那里找,但 是如果头文件不在/usr/icnclude
里我们就要用-I参数指定了,比如头文件放在/myinclude目录里,那编译命令行就要加上-
I/myinclude 参数了,如果不加你会得到一个”xxxx.h: No such file or directory”的错
误。-I参数可以用相对路径,比如头文件在当前 目录,可以用 -I. 来指定。上面我们提到的–cflags参
数就是用来生成-I参数的。

g++ -I/myinclude test.cpp 
  1. -Wall 打印警告信息
  2. -w 关闭警告信息
  3. -std=c++11 设置编译标准
  4. -o 指定输出文件名
  5. -D 定义宏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值