g++ 重要编译参数

一. -g 产生带调试信息的可执行文件test

产生带调试信息的可执行文件test,如果不加-g,输出的test是不包含调试信息的。加了-g 才可以被GDB所调试。

g++ -g test.cpp -o test

二. -o 优化源代码

优化指省略掉代码中从未使用过的变量,直接将常量表达式用结果值代替等。
这些操作会缩减目标文件的所包含的代码量,提高最终生成的可执行文件的运行效率。

一般使用 -o2 ,表示g++产生尽可能小和尽可能快的代码

g++ -o2 test.cpp 

在这里插入图片描述

-o 参数实例

vim inefficiency.cpp
#include <iostream>
using namespace std;

int main(void)
{
	unsigned long int counter;
	unsigned long int result;
	unsigned long int temp;
	unsigned int five;
	int i;
	// 每个for训练,都计算counter的值
	for (counter=0;counter<2009*2009*100/4 + 2010;counter+=(10-6)/4)
	{
		temp = counter/1979;
		for (i=0;i<20;i++)
		// 每一次for循环 都计算一个常量
			five = 200 * 200 /8000;
			result = counter;
  }
  cout <<"result="<<result<<endl;
  return 0;
}
# 不使用优化参数生成一个可执行文件
g++ inefficiency.cpp -o a_without_0
# 使用-o2参数优化该冗余代码,生成一个更高效的可执行文件 a_with_02
g++ inefficiency.cpp -o2 -o a_with_o2
ls -lh

在这里插入图片描述

执行没有优化的可执行文件,并显示执行时间:

time ./a_without_0

执行优化后的可执行文件,并显示执行时间:

time ./a_with_o2

看第一个时间即可。优化后的代码时间减少。
优化后的速度是比较宽ia快的

三. -l 和 -L 指定要链接的库文件 | 指定要链接的库文件路径

# 链接glog库
# 在/lib和/usr/lib 和 /usr/local/lib 中的库,直接用-l参数就能链接
g++ -lglog test.cpp
# 如果库文件没放上面三个目录里,需要使用-L参数指定库文件所在目录
# 链接/home/bing/mytestlibfolder路径下的mytest库文件
g++ -L/home/bing/mytestlibfolder -lmytest test.cpp

四. -I (大写的i) 指定头文件搜索目录

i是include的缩写,/usr/include目录一般是不用指定的,gcc知道去哪里找,但是如果头文件不在/usr/include里,我们就要用-I来指定。比如头文件在/myinclude目录里,编译命令行要加上 -I/myinclude参数。如果不加会得到一个 xxxx.h:No such file or directory的错误。

-I 可以用相对路径,比如头文件在当前目录下。

g++ -I/myinclude test.cpp

五. -Wall 打印警告信息

g++ -Wall test.cpp

六. 关闭警告信息

g++ -w test.cpp

七. -std=c++11 设置编译标准

# 使用c++11标准编译test.cpp
g++ -std=c++11 test.cpp

如果不指定,那么会使用默认的,比如是c++98,那么它就不包含c++11的特性。

八. -o 指定输出文件名

g++ test.cpp -o test

九. -D 定义宏

# 定义 DEBUG宏
# 如果文件中有DEBUG宏部分的相关信息,用DDEBUG来选择开启或关闭DEBUG
g++ -DDEBUG main.cpp

对下面的main.cpp文件定义DEBUG之后,才会执行 #ifdef DEBUG后面的语句。

#include <stdio.h>
int main()
{
	#ifdef DEBUG
		printf("DEBUG LOG\n");
	#endif
		printf("in\n");
}

十. 查看GCC命令使用手册

man gcc

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

computer_vision_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值