Linux下,g++的常用编译参数,调试信息,优化,指定库,头文件目录,库目录,警告信息处理,编译标准,输出名称,宏,多文件的编译

Linux下,g++的常用编译参数,调试信息,优化,指定库,头文件目录,库目录,警告信息处理,编译标准,输出名称,宏,多文件的编译

一、gcc/g++的编译参数
1、-g 编译带有调试信息的可执行文件,
调试信息是调试器gdb使用的调试信息,用来调试程序,
调试信息和可执行文件在统一输出文件中,带有调试信息的可执行文件大小会大很多。
g++ -g test.cpp

在这里插入图片描述

2、-O[num] 优化源代码
优化:
编译器通过一切程序员不知道的方法,比如:省略掉未使用的变量,使用结果代替常量表达式等操作,改变代码,提高可执行文件的执行效率。
-O 告诉g++对源代码进行优化,一般优化会让程序运行的更快,num范围常在0-3之间

-O0表示不做优化
-O1为默认优化
-O2除了10的优化以外,还做一些额外调整工作,例如指令调整等
-O3包括循环展开和其他一些处理特性相关的优化工作
选项会使编译的速度变慢,好处是编译的可执行文件运行会更快。

g++ -O2 test.cpp -o test
这里的test.cpp的内容过于简单了,不演示三种优化命令的效果了。
在这里插入图片描述

3、-l指定库文件,-L指定库文件路径
-l小写l用来指定程序要链接的库,后面要紧跟库名,g++默认的三个路径为/lib,/usr/lib,/usr/local/lib可以直接使用-l链接到,例如:
g++ -lglog test.cpp
编译test.cpp时链接glog库

如果库文件没有放在上面的三个目录里,需要使用-L参数指定库文件所在目录,-L参数跟着的时库文件所在的目录名,例如:
g++ -L/home/dzl/folder -lmytest test.cpp
链接mytest库,这个库存放在/home/dzl/folder目录下

在这里插入图片描述
注意在编译时要编译的文件放在g++的后面,头文件和库文件放在编译文件的后面,否则会编译报错。

4、-I指定头文件搜索目录
头文件在/usr/include目录中时一般不需要指定,不在时需要使用-I/dir,如果不加会报错,内容是“no such file or directory”,-I可以使用相对路径,例如:
g++ -I/myinclude test.cpp

在这里插入图片描述

5、-Wall打印警告信息
可以打印出gcc提供的警告信息
g++ -Wall test.cpp

可惜没啥警告信息
在这里插入图片描述

6、-w关闭警告信息
g++ -w test.cpp

7、std=c++11设置编译标准
使用c++11编译test.cpp
g++ -std=c++11 test.cpp

在这里插入图片描述

8、-o指定输出文件名
g++ test.cpp -o test
如果没有-o就会默认输出a.out

前面有很多。

9、-D定义宏
在使用gcc/g++编译的时候定义宏,例如-DDEBUG定义DEBUG宏,当文件中有DEBUG宏定义相关部分的信息时,可使用-DDEBUG来选择开启或关闭DEBUG

在这里插入图片描述

三、文件很多的时候的编译
1、最简单的就是直接编译
g++ main.cpp src/swap.cpp -Iinclde
编译./main.cpp和./src目录下的swap.cpp,引用的头文件在./include路径下
因为没有指定-o,所以编译出来的可执行程序是a.out,运行的时候输入./a.out回车就可以。

在这里插入图片描述

2、添加参数编译
g++ main.cpp src/swap.cpp -Iinclude -std=c++11 -O2 -Wall -o test
编译./main.cpp和./src/swap.cpp,引用的头文件在./include路径中,使用c++11作为编译标准,O2级优化,打印出编译时gcc提供的警告信息,输出可执行程序名为为test

在这里插入图片描述
加了一堆参数,要注意的其实是语法别犯错就行。

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值