gcc/g++命令

参考:http://www.cnblogs.com/cryinstall/archive/2011/09/27/2280824.html

注意:gcc和g++是linux系统下的编程常用指令,C语言文件用gcc,cpp文件用g++。

1.预处理 

g++ -E filename.cpp > filename.i

功能:输出预处理后的文件,linux下以.i为后缀名。只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 。

这一步主要做了这些事情:宏的替换,还有注释的消除,还有找到相关的库文件。用编辑器打开Test.i会发现有很多很多代码,你只需要看最后部分就会发现,预处理做了宏的替换,还有注释的消除,可以理解为无关代码的清除。下面是Test.i文件的最后部分,可以看见宏的替换和注释的消除。

2.将.i文件生成.s汇编语言文件 

g++ -S filename.cpp 

功能:会生成Test.s文件,.s文件表示是汇编文件,用编辑器打开就都是汇编指令。

g++ -s filename.cpp / g++ filename.cpp

功能:会生成a.out文件,.out文件并不是可执行文件的扩展名,可以用objdump -S a.out打开就都是汇编指令,a表示默认文件名。

3.生成.o文件  

g++ -c filename.cpp 

功能:会生成template.o文件,.o是GCC生成的目标文件,除非你是做编译器和连接器调试开发的,否则打开这种.o没有任何意义,二进制机器码一般人也读不了。

4.连接目标代码,生成可执行程序  

g++ Test.o -L /usr/lib/x86_64-linux-gnu/root5.34/cint/linclude/iostream

功能:将.o文件与所需的库文件链接整合形成可执行文件。-L 表示链接,这里我后面写的是绝对路径,相对各人电脑不同

这样生成的是默认文件名文件 a.out,也可以自己定义文件名在上面各个步骤中你可以用-o命令输出你自己想要的各种名字。

g++ Test.cpp -o test.exe,最后面的文件有多种命名形式,test,test.exe,test.out都可以,运行的时候:./filename,如果想要打开这些文件,应该使用objdump -S filename

注意:

.out 是 gcc 编译器的输出文件的默认扩展名,并不是可执行文件的扩展名。gcc 可以输出不能运行的文件,但默认还是 .out 。

.out文件就是扩展名为out的文件,它本身不代表任何信息。在Linux中判断文件是否是可执行文件,首先要看文件的属性是否是可执行的,它没有一个默认的扩展名表示此文件为可执行文件。为了方便,Linux中可执行文件一般都是没有扩展名的。 在使用gcc编程时,没有指定输入可执行文件名,默认生成可执行文件a.out文件。

 Linux 的可执行文件是基于权限确定的。而不是基于扩展名。

转载于:https://www.cnblogs.com/qinguoyi/p/7507270.html

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

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

相关文章

计算机存储

位(bit):一个数字0或一个数字1,代表一位 字节(Byte):每逢8位是一个字节,是数据存储的最小单位 1Byte 8 bit 平时所说的网速: 100Mbps实际上是以位(b&#xf…

leetcode113. 路径总和 II(dfs)

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum 22,5/ \4 8/ / \11 13 4/ \ / \7 2 5 1 返回:[[5,4,11,…

java forward 修改请求参数_聊聊springboot session timeout参数设置

序本文主要介绍下spring boot中对session timeout参数值的设置过程。ServerPropertiesspring-boot-autoconfigure-1.5.8.RELEASE-sources.jar!/org/springframework/boot/autoconfigure/web/ServerProperties.javaOverridepublic void customize(ConfigurableEmbeddedServletCo…

javascript控制台_如何使用JavaScript控制台改善工作流程

javascript控制台by Riccardo Canella里卡多卡内拉(Riccardo Canella) 如何使用JavaScript控制台改善工作流程 (How you can improve your workflow using the JavaScript console) As a web developer, you know very well the need to debug your code. We often use extern…

appium===setup/setupclass的区别,以及@classmathod的使用方法

一、装饰器 1.用setUp与setUpClass区别 setup():每个测试case运行前运行 teardown():每个测试case运行完后执行 setUpClass():必须使用classmethod 装饰器,所有case运行前只运行一次 tearDownClass():必须使用classmethod装饰器,所有case运行完后只运行一次 2.是修饰符&#xf…

cache failed module status_Flutter混编之路——iOS踩坑记录

一、运行Xcode编译或者flutter run/build 过程中报错:"x86_64" is not an allowed value for option "ios-arch".解决方案在Debug.xcconfig中指定 “FLUTTER_BUILD_MODEdebug”,Release.xcconfig中指定“FLUTTER_BUILD_MODErelease”…

【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?...

简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特…

java object类的常用子类_Java中Object类常用的12个方法,你用过几个?

前言Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”。Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object 类中的 public 方法。先看下 Object 的类结构(快捷键:alt7):1.…

leetcode面试题 04.12. 求和路径(dfs)

给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子…

javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

一、ServletJSPJavaBean开发模式(MVC)介绍 ServletJSPJavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 ServletJSPJavaBean模式程序各个模块之间层次清晰&…

2018黄河奖设计大赛获奖_宣布我们的freeCodeCamp 2018杰出贡献者奖获奖者

2018黄河奖设计大赛获奖by Quincy Larson昆西拉尔森(Quincy Larson) 宣布我们的freeCodeCamp 2018杰出贡献者奖获奖者 (Announcing Our freeCodeCamp 2018 Top Contributor Award Winners) Over the past 3 years, freeCodeCamp.org has grown from a small open source proje…

Log4j配置详解

来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接keyvalue格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件 …

cors数据类型_如何根据RTK的差分格式选择千寻cors账号的源节点进行设置?

千寻cors账号的设置中源节点是根据使用的品牌RTK是为双星仪器还是三星仪器选择,但问题就在于我们看到的RTK的技术参数中一般很少见到标注仪器的卫星系统,更多的是差分格式。其实千寻cors账号的源节点也可以根据RTK的差分格式进行选择,不过这两…

java swing 串口_ComTest 接收串口数据,并显示在文本框内,通过JavaSwing实现 Develop 265万源代码下载- www.pudn.com...

文件名称: ComTest下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 3157 KB上传时间: 2016-09-21下载次数: 0提 供 者: 韩坤详细说明:接收串口数据,并显示在文本框内,通过JavaSwing实现-Receive serial data, and displayed in the t…

leetcode329. 矩阵中的最长递增路径(dfs)

给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums [[9,9,4],[6,6,8…

SQL大圣之路笔记——PowerDesigner之新建table、view、proc

1. 新建table、view、proc 转载于:https://www.cnblogs.com/allenzhang/p/6305564.html

用python绘制一条直线_python绘制直线的方法

本文实例为大家分享了python绘制直线的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下#!/usr/bin/env pythonimport vtk# 绘制通用方法def myshow(linepolydata):# Now well look at it.lineMapper vtk.vtkPolyDataMapper()if vtk.VTK_MAJOR_VERSION < 5:lineMap…

测试驱动开发 测试前移_我如何以及为什么认为测试驱动开发值得我花时间

测试驱动开发 测试前移by Ronauli Silva通过罗纳利席尔瓦(Ronauli Silva) I first read about test driven development (TDD) in some technical reviews blog, but I barely read it (or thought about it). Why would people write tests first when they already knew the…

P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

对于一个牛&#xff0c;它存在两种状态&#xff1a;1.处于联通分量 2.不处于联通分量。对于处于联通分量的牛&#xff0c;求出联通分量的大小&#xff1b;对于不处于联通分量的牛&#xff0c;求出其距离联通分量的路程联通分量大小。 不同的联通分量&#xff0c;染上不同的颜色…

ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

开发工具&#xff1a;VS2015(2012以上)SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下&#xff1a; 日程管理 http://www.cnblogs.com/ymnets/p/7094914.html 任务调度系统界面 http://www.cnblogs.com/ymnets/p/5065154.h…