gcc/g++ 的使用

————gcc:只能编译c语言

————g++:c++和c都可以编译

当然,c语言编译还是推荐gcc。

在学习gcc/g++之前,我们要先了解一些知识点:

一、背景知识

1,预处理

gcc -E就是告诉编译器到预处理阶段就停下来,-o后面跟的是文件名,.i是预处理后的文件后缀。

a,去注释

b,头文件展开

c,宏替换

d,条件编译

可以看到头文件展开后行号来到了八百多行。

在Linux中,头文件已经提前准备好

例:(输入指令  ls/user/include/)

2,编译(生成汇编)

gcc -S:就是告诉编译器到编译阶段就停下来、.s就是编译的文件后缀

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

gcc -c:告诉编译器到汇编时就停下来,.o是汇编之后的文件后缀:

编译完之后属于二进制文件,可重定向目标二进制文件,简称目标文件,虽然已经是二进制文件,但没和库之类的形成链接无法独立运行。

有权限和有能力不是一回事:目标文件

4,链接(生成可执行文件或库文件)

链接属于最后步骤:生成可执行文件:

二、关于链接

链接在库中就会给我们提供方法

c语言的标准库,本质上就是一个文件,有路径

库有自己的命名风格:libname.so.xxx

在linux中有.so(静态库)\.a(静态库)

在Linux中默认只会安装了动态库,静态库需要自己安装

在编译器使用静态库链接时,会将自己的方法拷贝到目标程序中,之后不再调用静态库链接

指令;dd+文件名(可查看该文件用到的库)

验证:

要使用静态库编译程序,在后面加-static,没有静态库可以用yum安装:

sudo yum install -y glibc-static 

可以看到a.out和test.out大小差距,前者用了动态库,后者用了静态库。

如果我们没有静态库,直接使用是不行的,但是我们有静态库没有动态库,在编译器找不到动态库之后就回去找静态库,-static的本质就是改变优先级。

动静态链接可以混合使用

动静态的优缺点:

动态库优点:属于共享库,有效节省资源(磁盘,内存,网络)空间

动态库缺点:动态库一旦缺失导致整个程序都无法运行

静态库优点:不依赖库程序,可以独立运行

静态库缺点:体积大,比较消耗资源

debug&&release

debug可以被追踪调试:

gcc test.c -o test -g

其中-g就是以debug的形式编译程序

命令:readelf -S test.c -debug

可以把空间布局情况打印:

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

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

相关文章

jvm中的引用类型

Java中的引用类型 1.强引用 一个对象A被局部变量、静态变量引用了就产生了强引用。因为局部变量、静态变量都是被GC Root对象关联上的,所以被引用的对象A,就在GC Root的引用链上了。只要这一层关系存在,对象A就不会被垃圾回收器回收。所以只要…

MySQL简解

文章目录 1. MySQL框架2. 执行流程2.1. 连接池:2.2. SQL 前端(SEVER)2.2.0. 查询缓存2.2.1. SQL 接口2.2.2. SQL 解析器2.2.3. SQL 执行器2.2.4. INNODB 中读写操作 2.3. 数据的保存形式 3.其他重要概念3.1. 索引3.1.1. 简单概念3.1.2. 索引优化:1. Usin…

Node.js -- HTTP协议和网络基础概念

文章目录 1. 初识HTTP协议2. 窥探HTTP协议2.1 请求报文结构2.2 响应报文 3. 网络基础概念3.1 IP3.2 端口 本节相关内容都可以在 添加链接描述进行查看,深入了解相关内容。 1. 初识HTTP协议 HTTP协议其实就是浏览器和服务器之间的一个协议,浏览器会向服务…

相亲平台app小程序

相亲平台app小程序是一种基于手机应用的微型程序,专为在线相亲交友活动设计。它提供了一系列的功能,旨在帮助用户更方便、更高效地找到心仪的伴侣。 首先,用户可以在个人资料部分上传照片、填写个人资料、设置兴趣爱好等信息,以便…

【Git教程】(十五)二分法排错 — 概述及使用要求,执行过程及其实现(用二分法人工排错或自动排错),替代解决方案 ~

Git教程 二分法排错 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 用二分法人工排错3.2 用二分法自动排错 4️⃣ 替代解决方案 在开发过程中,我们经常会突然遇到一个错误,是之前早期版本在成功通过测试时没有出现过的。这时候,时下较…

基于spring boot学生综合测评系统

基于spring boot学生综合测评系统设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件…

主打国产算力 广州市通用人工智能公共算力中心项目签约

4月9日,第十届广州国际投资年会期间,企商在线(北京)数据技术股份有限公司与广州市增城区政府就“广州市通用人工智能公共算力中心”项目进行签约。 该项目由广州市增城区人民政府发起,企商在线承建。项目拟建成中国最…

程序员过了35岁没人要?“这行越老越香”

程序员35岁失业?参加完OceanBase开发者大会,我又悟了! 周六参加了OceanBase2024 开发者大会的现场,来之前我其实挺忐忑的,我觉得一个数据库产品的发布会,能有什么新鲜的东西? 踏入酒店的那一刻&…

c++11 标准模板(STL)本地化库 - 平面类别(std::messages) - 实现从消息目录获取字符串(二)

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 实现从消息目录获取字符串 std::messages template< class Ch…

智慧文旅:引领旅游产业智慧升级的创新模式

一、智慧文旅是什么&#xff1f; 智慧文旅是指以当地特色文化为核心&#xff0c;借助现代科技手段&#xff0c;实现旅游景区全面智慧升级的旅游模式。在智慧文旅中&#xff0c;新一代信息网络技术和装备得到充分运用&#xff0c;文化旅游基础设施得到新建和改善&#xff0c;特…

自动批量将阿里云盘文件发布成WordPress文章脚本源码(以RiPro主题为例含付费信息下载地址SEO等自动设置)源码

背景 很多资源下载站&#xff0c;付费资源下载站&#xff0c;付费内容查看等都可以用WordPress站点发布内容&#xff0c;这些站点一般会基于一个主题&#xff0c;付费信息作为文章附属的信息发布&#xff0c;底层存储在WP表里&#xff0c;比如日主题&#xff0c;子比主题等。 …

猫咪也能吃大餐!福派斯无麸质牛肉猫粮,让爱宠更健康

作为猫奴的你们&#xff0c;总是希望给自家的小猫咪提供最好的营养。那么&#xff0c;今天我就来给大家推荐一款我个人非常喜欢的营养猫粮——福派斯无麸质牛肉高脂猫粮。 首先&#xff0c;让我们聊聊为什么选择无麸质猫粮。有些猫咪对麸质成分敏感&#xff0c;吃了含有麸质的猫…