Linux 编译器gcc/g++使用

gcc/g++同理

编译器运行过程

1. 预处理(进行宏替换)

gcc -E a.c -o a.i

预处理后还是c语言

-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面

告诉gcc,从现在开始进行程序的翻译,将预处理工作做完停下

2. 编译(生成汇编)

gcc -S a.o -o a.s

-S  编译到汇编语言不进行汇编和链接 

从现在开始进行程序的翻译,将编译工作做完,就停下,可以从.i开始也可以从.c开始

3. 汇编(生成机器可识别代码)

将汇编语言翻译成二进制文件(目标文件)

gcc -c a.s -o a.o//.o文件不能执行

-c  编译到目标代码

从现在开始进行程序的翻译,将汇编工作做完就停止

4. 连接(生成可执行文件或库文件)

gcc a.o –o a

将可重定位目标二进制文件和库进行连接形成可执行程序

./[生成的目标文件]

./a

执行可执行文件

库的概念

动态库不能缺失,一旦对应动态库缺失,影响的不知一个程序,会导致很多程序都无法运行

在编译器使用静态库进行静态链接时,会将自己的方法拷贝到目标程序中,该程序以后不用再依赖静态图

linux中 .so动态库  .a 静态库

Windows中 .dll动态库  .lib静态库

在linux中编译形成可执行程序,默认采用的是动态链接

Linux中静态链接指令:gcc a.c -o a_static -static

安装静态库

C/C++静态库

yum install -y glibc-static//C静态库
yum install -y libstdc++-static//C++静态库

gcc格式

格式 gcc [选项] 要编译的文件 [选项] [生成的目标文件]

gcc选项

-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面

告诉gcc,从现在开始进行程序的翻译,将预处理工作做完停下

-S  编译到汇编语言不进行汇编和链接

从现在开始进行程序的翻译,将编译工作做完,就停下,可以从.i开始也可以从.c开始

-c  编译到目标代码

从现在开始进行程序的翻译,将汇编工作做完就停止

-o 文件输出到文件 -o后面永远跟着可执行程序文件

-static 此选项对生成的文件采用静态链接

-g 生成调试信息。GDB 调试器可利用该信息。(要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,进入debug模式

-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.

-O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高

-w  不生成任何警告信息。

-Wall 生成所有警告信息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ETLCloud中如何执行SQL脚本

SQL脚本 在数据库管理与数据分析的广阔领域中,SQL(Structured Query Language,结构化查询语言)脚本扮演着举足轻重的角色。作为一门专为关系型数据库设计的编程语言,SQL不仅能够执行数据的检索、更新、插入及删除等基…

python列表元素操作与函数应用详解

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、列表元素加一的实现方法 示例代码 二、列表生成式的简化操作 三、列表反转函数revers…

解密网络流量监控:优化IT运维的利器

引言: 在当今数字化时代,网络流量监控是维护网络稳定与业务连续性的关键。作为一名资深网络工程师,我将分享一些关于网络流量监控的重要知识,并探讨如何在IT运维中运用这一工具优化网络性能,确保业务的顺畅进行。 1. 网…

jquery---ajax方法示例

ajax方法 $.ajax({name:value, name:value, ... }) ajax方法有一个参数,一定长度的对象,内部指定了ajax的请求地址和格式,方式等等,它可以有以下的属性和值 示例 这里展示了一个简单的get请求图片url的实例 let data; let url…

压力测试JMeter

压力测试JMeter 1 下载JMeter1.1 测试计划1.2 JMeter Address Already in use 错误解决1.3 java 内存模型1.4 jconsole与jvisualvm1.5 优化方向1.6 Nginx动静分离 1 下载JMeter 官网地址:https://jmeter.apache.org/download_jmeter.cgi 运行apache-jmeter-5.6.3\…

Linux 驱动设备匹配过程

一、Linux 驱动-总线-设备模型 1、驱动分层 Linux内核需要兼容多个平台,不同平台的寄存器设计不同导致操作方法不同,故内核提出分层思想,抽象出与硬件无关的软件层作为核心层来管理下层驱动,各厂商根据自己的硬件编写驱动…

手把手从0到1教你做STM32+FreeRTOS智能家居--第10篇之ASR-PRO语音识别模块

前言 先看实验效果,通过ASR-PRO语音智能识别控制模块,来控制STM32单片机实现对应的控制功能。因为后台好多小伙伴私信问用的是什么语音模块,并且很少在网上看到如何使用此模块相关的文章,所以我将会在本篇文章详细介绍一下此模块…

国际数字影像产业园|科技与文创产品创意集市,共筑创新文化新高地

5月29日,为进一步增强园区与企业之间粘性,不断激发企业的创新活力,园区举办了“数媒大厦科技与文创产品创意集市活动”。本次活动由成都树莓信息技术有限公司主办,成都目莓商业管理有限公司、树莓科技(成都&#xff09…

成都欣丰洪泰文化传媒有限公司助力品牌快速崛起

在当今数字化浪潮汹涌的时代,电商行业作为新经济的代表,正以其独特的魅力和无限的潜力,引领着商业模式的创新与变革。在这个充满机遇与挑战的领域里,成都欣丰洪泰文化传媒有限公司凭借其专业的电商服务能力和前瞻性的战略眼光&…

【Paddle】Inplace相关问题:反向传播、影响内存使用和性能

【Paddle】Inplace相关问题:反向传播、影响内存使用和性能 写在最前面inplace 的好处有哪些?能降低计算复杂度吗在反向传播时,Inplace为什么会阻碍呢?“计算图的完整性受损”表达有误原地操作 sin_()为什么原地操作会阻碍反向传播…

IPFoxy Tips:海外代理IP适用的8个跨境出海业务

在当今数字化时代,互联网已经成为商业和个人生活不可或缺的一部分。IP代理作为出海业务的神器之一,备受跨境出海业务人员关注。IPFoxy动态、静态纯净代理IP也根据业务需求的不同,分为静态住宅、动态住宅、静态IPv4、静态IPv6四种类型代理。那…

祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文

5月17日消息,在荷兰举行的国际顶级数据库学术会议ICDE 2024上,阿里云斩获工业和应用赛道的“最佳论文奖”,这也是中国企业首次获此殊荣。阿里云PolarDB创新性地解决了数据库Serverless中跨机事务迁移的核心难题,将跨机迁移时间压缩…

零经验转行的人,嵌入式软件开发项目经历咋办?

零基础转行,首先一定要系统的把基础知识学一遍,这样就有个系统的概念。先说一下前置知识,因为你完全没基础,这些知识还是有必要了解的,要了解一下刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌…

2024年03月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 以下选项中,创建类正确的是?() A: class test1:def prt(self):……B: class Mg(

HNU-计算机体系结构-实验2-Tomasulo算法

计算机体系结构 实验2 计科210X 甘晴void 202108010XXX 1 实验目的 熟悉Tomasulo模拟器同时加深对Tomasulo算法的理解,从而理解指令级并行的一种方式-动态指令调度。 掌握Tomasulo算法在指令流出、执行、写结果各阶段对浮点操作指令以及load和store指令进行什么…

视频怎么提取成文字?7个软件教你快速进行视频文字提取

视频怎么提取成文字?7个软件教你快速进行视频文字提取 提取视频中的文字通常需要使用视频转文字的软件或在线工具。以下是七款常用的软件和工具,它们可以帮助您快速进行视频文字提取: 口袋视频转换器:这是一款专业的视频转文字…

springboot 作为客户端接收服务端的 tcp 长连接数据,并实现自定义结束符,解决 粘包 半包 问题

博主最近的项目对接了部分硬件设备,其中有的设备只支持tcp长连接方式传输数据,博主项目系统平台作为客户端发起tcp请求到设备,设备接收到请求后作为服务端保持连接并持续发送数据到系统平台。 1.依赖引入 连接使用了netty,如果项…

人工智能应用-实验5-BP 神经网络分类手写数据集

文章目录 🧡🧡实验内容🧡🧡🧡🧡代码🧡🧡🧡🧡分析结果🧡🧡🧡🧡实验总结🧡🧡 &#x1f9…

图形学初识--空间变换

文章目录 前言正文矩阵和向量相乘二维变换1、缩放2、旋转3、平移4、齐次坐标下总结 三维变换1、缩放2、平移3、旋转绕X轴旋转:绕Z轴旋转:绕Y轴旋转: 结尾:喜欢的小伙伴可以点点关注赞哦 前言 前面章节补充了一下基本的线性代数中…

统计计算五|MCMC( Markov Chain Monte Carlo)

系列文章目录 统计计算一|非线性方程的求解 统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法) 统计计算三|Cases for EM 统计计算四|蒙特卡罗方法(Monte Carlo Method) 文章目录 系列文章目录一…