g++ 重要编译参数

news2024/10/5 22:23:20

一. -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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成集云 | 云椒集成用友T | 解决方案

源系统成集云目标系统 方案介绍 云椒SAAS管理系统&#xff0c;帮助餐饮企业实现精细化管理、批量化生产、标准化出品、连锁化经营、降本增效、食安控制的全流程解决方案。该系统为团餐企业的转型和发展持续赋能&#xff0c;打造全产业链生命周期的可持续发展服务平台&#xf…

纺织工厂数字孪生3D可视化管理平台,推动纺织产业数字化转型

近年来&#xff0c;我国加快数字化发展战略部署&#xff0c;全面推进制造业数字化转型&#xff0c;促进数字经济与实体经济深度融合。以数字孪生、物联网、云计算、人工智能为代表的数字技术发挥重要作用。聚焦数字孪生智能工厂可视化平台&#xff0c;推动纺织制造业数字化转型…

程序设计(2023年10月)

函数传参有三种方式&#xff1a;值传递&#xff0c;地址传递&#xff0c;引用传递 排序算法&#xff1a;见下文八大排序 数据结构—八大排序_数据结构排序-CSDN博客

在pycharm中创建python模板文件

File——>Setting——>File and Code Templates——>Python Scripts 在文本框中输入模板内容

“揭秘!京东关键字搜索接口,轻松获取海量精准商品信息!“

京东关键字搜索接口是一种应用程序接口&#xff0c;它允许开发者通过使用特定的关键词或短语来查询京东的商品数据库&#xff0c;获取相关的商品信息和销售数据。 通过这个接口&#xff0c;企业和个人可以快速、准确地获取他们所需的商品信息&#xff0c;进而提高销售和客户满…

pd19虚拟机软件 Parallels Desktop 19 mac中文停用功能

Parallels Desktop 19 mac是一款功能强大的虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 Parallels Desktop 19 for Mac停用功能 从Paralle…

Java中,如何去掉字符串中前面所有的0

大家好&#xff0c;我是三叔&#xff0c;这期主要给大家分享下在开发中使用的字符串的一些常见方法。 例如&#xff1a;00000000110&#xff0c;现在需要去掉前面所有补的0&#xff0c;得到110&#xff0c;相信大家在开发中肯定有遇到过类似的开发需求&#xff0c;如何做&…

comfyui安装指南及animaldiff使用

云盘文件 如果网络无法下载&#xff0c;我也找了对应网盘文件 链接&#xff1a;https://pan.quark.cn/s/19c83810e915 comfyui安装 https://github.com/comfyanonymous/ComfyUI/releases https://github.com/comfyanonymous/ComfyUI/releases/download/latest/ComfyUI_windo…

TCP通信_支持多个客户端同时通信 群聊

客户端 package TCP3;//完成TCP通信的 多发多收import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner;public class Client {public static void main(String[] args)throws Exception {//1&#xff1a;创建Sock…

【必看技巧】Access开发者必备:如何用代码隐藏功能区、导航区、状态栏?

hi&#xff0c;大家好呀&#xff01; 今天想着给大家分享点啥呢&#xff1f;最近几个月断更的有些“勤快”了&#xff0c;那就给大家分享个几行代码。 当我们在access中开发完成后&#xff0c;为了让我们的系统更加的像一个系统&#xff0c;我们会把access的功能区&#xff0…

品牌公关稿件怎么写?纯干货

品牌公关稿件成为了各大企业传播价值观、提升品牌形象的重要手段。然而&#xff0c;如何撰写一篇高质量的、吸引人的品牌公关稿件却让许多人头疼不已。本文伯乐网络传媒将从选题、结构、语言、传播等方面&#xff0c;为您详细解析品牌公关稿件的写作技巧&#xff0c;帮助您轻松…

Spring底层原理(一)

Spring底层原理&#xff08;一&#xff09; ApplitionContext与BeanFactory BeanFactory是ApplicationContext的父接口BeanFactory才是Spring的核心容器,ApplicationContext对其功能进行了组合 类图 内部方法调用 BeanFactory的功能 获取bean检查是否包含bean获取bean别名 …

Vite介绍及实现原理

Vite介绍及实现原理 一、Vite简介1.1、什么是Vite1.2 、Vite的主要特性1.3、 为什么要使用Vite 二、Vite的实现原理2.1、依赖处理2.2、静态资源加载2.3、vue文件缓存2.4、 js/ts处理 三、热更新原理四、vite基本使用4.1、安装4.2、搭建项目 一、Vite简介 1.1、什么是Vite Vite…

“中国版Zara”拉夏贝尔:从辉煌到破产清算

文/ 大力财经 拉夏贝尔的破产清算&#xff0c;让人不禁惋惜。这个曾经被誉为“中国版Zara”的女装品牌&#xff0c;在全国拥有超过2000家门店&#xff0c;一度是年轻人的追捧对象。 然而&#xff0c;由于市场竞争激烈、品牌定位模糊、库存积压严重等问题&#xff0c;拉夏贝尔…

数字人扫描对虚拟人三维动画宣传片制作有何作用?

近日&#xff0c;周杰伦超写实数智人“周同学”首支元宇宙先导片《次元拓》在演唱会现场进行了全球首发&#xff0c;通过对实景拍摄一比一还原&#xff0c;打造出一个多重混合现实的元宇宙世界&#xff0c;展现出逼真的视觉效果&#xff0c;为粉丝和大众带来了一场科技的视觉盛…

idea免费插件分享

分享一些在开发中常用到的idea插件&#xff0c;都是一些我自己常用的&#xff0c;希望对各位程序员有帮助吧。 1、Chinese Language 汉化插件&#xff1a;中文语言包将为您的 IntelliJ IDEA, AppCode, CLion, DataGrip, GoLand, PyCharm, PhpStorm, RubyMine, WebStorm, 和Rid…

【备忘录】修复docker环境下的nacos安全漏洞:身份认证绕过漏洞

文章目录 一、漏洞复现1.1 访问登录口用户名输入nacos密码输入任意值&#xff0c;进行抓包1.2 伪造登录凭证1.3 登录包中新加入一项凭证验证 二、漏洞解决2.1 分析原因2.2 解决方案2.3 操作留痕1、先了解nacos部署环境2、查看比对配置文件3、修改配置文件后&#xff0c;重启 一…

单链表,三部分详解(第一部分)单链表的解析

1. 链表的概念及结构 链表就是一个在物理储存上非连续&#xff0c;但在逻辑顺序上是连续的指针链接实现。 链表就像一大节火车&#xff0c;你在淡季的时候可以把车厢减少一点&#xff0c;旺季的 时候可以多加一点&#xff0c;不会影响其他车厢的使用。每节车厢都独立存在。 那我…

Hadoop+Hive+Spark+Hbase开发环境练习

1.练习一 1.数据准备 在hdfs上创建文件夹&#xff0c;上传csv文件 [rootkb129 ~]# hdfs dfs -mkdir -p /app/data/exam 查看csv文件行数 [rootkb129 ~]# hdfs dfs -cat /app/data/exam/meituan_waimai_meishi.csv | wc -l 2.分别使用 RDD和 Spark SQL 完成以下分析&#xf…

【环境】Linux下Anaconda/ Miniconda安装+百度Paddle环境搭建+Cudnn(3090显卡+CUDA11.8+cudnn8.6.0)

清华源帮助链接&#xff1a;https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 下载链接&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 其他深度学习环境相关博文&#xff1a;【stable-diffusion】4090显卡下dreambooth、lora、sd模型微调的GUI环境…