Linux中的yum和gcc/g++

一、快速认识yum(简单介绍)

在Linux中,我们也要进行工具/指令/程序、安装、检查、卸载等等,需要使用到yum

在Linux中安装软件的方式:

  1. 源代码安装——交叉编译的工作
  2. rpm包直接安装
  3. yum/apt-get

yum:yum是我们Linux预装的一个指令,用来搜索、下载、安装对应的软件

就比如,手机上应用商店——也是一个app,并且是厂商内置的。

总而言之,yum相当于Linux的应用商店!

二、快速的使用yum(三板斧)

  1. yum list | grep command
  2. yum install [-y] command(这里的-y可加可不加)
  3. yum remove command   

注意后面的两条语句需要root权限操作,或者加上sudo.


三、Linux编辑器-vim的使用

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且
还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。

1、vim的基本概念

我们目前只需要掌握vim的三种模式,分别是命令模式、插入模式和底行模式。

  • 命令/正常/普通模式 :控制屏幕光标的移动,字符‘字或行的删除。(vim打开的时候,默认的模式)
  • 插入模式:只有在插入模式下,才可以做文字输入,该模式是我们后面用的最频繁的编辑模式
  • 底行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

想要回到命令模式,无脑Esc即可。

命令模式转到插入模式输入 o / i / a

命令模式转到底行模式输入 shift+; 也就是:

2、讨论常见模式——命令、底行

命令模式:

底行模式:

保存文件
「w」: 在冒号输入字母「w」就可以将文件保存起来
离开vim
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

!command :在不退出vim的前提下,执行操作

vs filename :文件替换,光标在哪一个界面,我们就正在编辑哪一个界面,底行也是一样。

CTRL + ww : 光标多终端切换

shift zz = ZZ : 保存并退出vim

批量化注释:

  1. ctrl v
  2. hjkl区域选择
  3. shift + i  = I
  4. //
  5. Esc

批量化去注释

  1. CTRL v
  2. hjkl 区域选择
  3. d

Linux编译器-gcc/g++使用

C语言建议使用gcc,当然也可以使用g++;但是C++语言只能使用g++编译器编译

一、程序的翻译过程

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

预处理功能主要包括宏定义、文件包含、条件编译、去注释等。
预处理指令是以#号开头的代码行。

所谓的头文件展开,本质是在预处理的时候,将头文件内容拷贝至源文件

实例: gcc –E hello.c –o hello.i

选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。

2、编译(生成汇编)

在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查
无误后,gcc 把代码翻译成汇编语言。
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
实例: gcc –S hello.i –o hello.s

扩展:条件编译

用途1:动态裁剪

我们可以通过给编译器传递不同的宏值,来进行对代码的动态裁剪。

比如一个程序有两个版本,商业版和普通版,这两者的区别就是商业版有更多的功能。这时候需要我们用两份代码去调试吗?

如果用两份代码,费力费时间。

而我们采用传递不同的宏值去进行代码的动态裁剪即可用一份代码!

用途2:防止头文件被重复包含

也是通过条件编译去检查头文件是否重复包含,如果没有包含头文件,就执行下面的代码,如果已经包含头文件,下面的代码不去执行。

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

汇编阶段是把编译阶段生成的“.s”文件转成目标文件
读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
实例: gcc –c hello.s –o hello.o

4、链接

在成功编译之后,就进入了链接阶段。
实例: gcc hello.o –o hello

函数库:

问题:

我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?

答:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到
系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函
数“printf”了,而这也就是链接的作用

动静态库的比较:

动态库:(动态链接)

优点:比较节省资源,不会出现太多的重复代码

缺点:对库的依赖性比较强,一旦库丢失,所有使用这个库的程序都无法运行

静态库:(静态链接)

优点:不依赖库,同类型平台中都可以直接运行使用。

缺点:可执行程序体积比较大,比较浪费资源(资源磁盘、内存、网络等资源)

TIP:

当gcc编译时,系统自动会用动态链接!


扩展:语言和编译器的自举的过程

问:先有的语言,还是先有的编译器?

答案是先有的语言。

比如先创造了C语言,然后我们用低级语言(汇编代码)写一个能编译C语言的编译器,这样我们就可以写软件了,接着用这个编译器去写一个用C语言写的编译器即可。

上述过程就是语言和编译器的自举过程。

二、gcc选项

-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息

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

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

相关文章

Androd SharedPreferences 存取key-value键值对的用法小结

文章目录 一、存储数据二、读取数据三、删除数据3.1 删除指定KEY的数据3.2 删除所有数据 四、测试4.1 查找数据文件4.2 查看数据的存储 在开发一个简单Launcher,点击APP按钮后,如无APP绑定,则弹出一个APP选择列表,选择后进行绑定&…

STL--string详解

STL基本内容 string是什么 string实质上是一个对象 string可看作一个串,类似字符数组 可以扩容,可以增删查改 可用下表访问操作符[]引用,修改某值 构造函数 默认构造 拷贝构造:参数为(string 或 char*) 求string对象的长度不…

AI预测体彩排列3第2套算法实战化测试第5弹2024年4月27日第5次测试

今天继续进行新算法的测试,今天是第5次测试。好了,废话不多说了,直接上图上结果。 2024年4月27日体彩排3预测结果 6码定位方案如下: 百位:6、2、1、7、8、9 十位:8、9、4、3、1、0 个位:3、7、8…

【C++】学习笔记——类和对象5

文章目录 二、类和对象14. 日期类的实现15. const成员16. 取地址重载17. 再谈构造函数初始化列表 18. explicit关键字19. static成员 未完待续 二、类和对象 14. 日期类的实现 上一篇我们已经大致将日期类的重要功能都给实现了,这节将会对日期类进行完善&#xff…

在Windows10上安全弹出U盘的三种方法,总有一种适合你

序言 为了避免数据丢失,你有必要学习如何在使用完外部硬盘或U盘后安全地将其从计算机中取出。如果在断开U盘之前不弹出,你可能会面临数据损坏的问题。所以不要懒惰。那么,如何从计算机中弹出外部硬盘驱动器或U盘?看看这里。这篇文…

强化训练:day5(游游的you、腐烂的苹果、孩子们的游戏(圆圈中最后剩下的数)

文章目录 前言1. 游游的you1.1 题目描述1.2 解题思路1.3 代码实现 2. 腐烂的苹果2.1 题目描述2.2 解题思路2.3 代码实现 3. 孩子们的游戏(圆圈中最后剩下的数)3.1 题目描述3.2 解题思路3.3 代码实现 总结 前言 本章内容:游游的you、腐烂的苹果、孩子们的游戏(圆圈中…

【03】JAVASE-分支语句【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture:波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。…

Redis 服务等过期策略和内存淘汰策略解析

redis服务是基于内存运行的,所以很多数据都存放在内存中,但是内存又不是无限的,所以redis就引出了key的过期和淘汰策略。 一、Redis的过期策略: 我们在set key的时候,可以给它设置一个过期时间,比如expire …

Autosar MCAL-RH850P1HC Fls配置

文章目录 FlsFlsGeneralFlsAcLoadOnJobStartFlsBaseAddressFlsBlankCheckApiFlsCancelApiFlsCompareApiFlsCopySupportedFlsCriticalSectionProtectionFlsDevErrorDetectFlsDeviceNameFlsDriverIndexFlsFaciEccCheckFlsGetJobResultApiFlsGetStatusApiFlsLoopCountFlsReadImmed…

(待更)DRF: 序列化器、View、APIView、GenericAPIView、Mixin、ViewSet、ModelViewSet的源码解析

前言:还没有整理,后续有时间再整理,目前只是个人思路,文章较乱。 注意路径匹配的“/” 我们的url里面加了“/”,但是用apifox等非浏览器的工具发起请求时没有加“/”,而且还不是get请求,那么这…

大语言模型在研究领域的应用——信息检索中的大语言模型

信息检索中的大语言模型 大语言模型提升信息检索任务利用大语言模型进行信息检索大语言模型增强的信息检索模型. 检索增强的大语言模型输入优化策略.指令微调策略.预训练策略. 总结应用建议未来方向 大语言模型对于传统信息检索技术与应用范式带来了重要影响。这两者在技术路径…

【加密周报】中美下周有“大事”发生!准备联手引爆比特币大行情?美国大型养老基金和梅隆银行已持有比特币ETF!

自减半之后,比特币便进入了横盘状态,始终在6-6.5万美元价格区间震荡。4月24日,香港证监会官网正式公示虚拟资产现货ETF获批名单,华夏(香港)、嘉实国际、博时国际旗下相关产品均在其列,并计划将于…

K8s 使用 Ceph RBD 作为后端存储(静态供给、动态供给)

一、K8s 使用 Ceph RBD Ceph RBD(Rados Block Device)是 Ceph 存储集群中的一个重要组件,它提供了块级别的存储访问。RBD 允许用户创建虚拟块设备,并将其映射到客户端系统中,就像本地磁盘一样使用。 首先所有 k8s 节…

【算法学习】线段树基础版

一 线段树 1.概念 线段树可以理解为一个二叉树,如果是利用线段树求区间的和,那么每个结点的权值维护的是结点所维护区间的和,再将该区间一分为二,分别交由左右儿子维护。 拿区间1 - 4的和来举例子, 根结点维护的是区…

嵌入式Linux学习——Ubantu初体验

Ubuntu 和Windows 的最大差别 Windows中的每一个分区都对应着一个盘符,盘符下可以存放目录与文件,而在Ubantu中没有盘符的概念,只有目录结构。实际上不同的目录可能挂载在不同的分区之下,如果想要查看当前目录位于磁盘的哪个分区…

IDEA:运行 Tomcat 报错 “1099”

1、报错的结果 报错 就很明显啊 localhost:1099 端口号被使用了 2、报错原因 tomcat的端口已经被使用,与运行的起了冲突。强制结束项目,但端口号没有被释放短时间内频繁运行tomcat服务器。 3、解决方法 win R 输入 cmd 打开命令框 黑窗口输…

个人学习-前端相关(2):ECMAScript 6-箭头函数、rest、spread

ES6的箭头函数 ES6允许使用箭头函数,语法类似java中的lambda表达式 let fun1 function(){} //普通的函数声明 let fun2 ()>{} //箭头函数声明 let fun3 (x) >{return x1} let fun4 x >{return x1} //参数列表中有且只有一个参数,()可…

纯血鸿蒙APP实战开发——预渲染实现Web页面瞬开效果

介绍 为了便于大家在使用本案例集时能够更详细的了解各个案例,本案例基于Web预渲染实现了案例介绍功能,即应用右下角的问号icon。 效果图预览 使用说明 因为直接加载的线上README,因此本功能需联网使用点击icon,即会弹出对应案…

Docker容器部署overleaf

overleaf在线版限制很多,好在开源,准备在本地Docker部署,网上翻了翻,似乎本地部署并非易事,我也尝试了一下,发现直接使用docker-compose拉官方最新镜像部署的确问题很多,不过最终还是完美解决。…

如何借模板助力小程序开发

不论是奶茶店还是其他行业,想要开发小程序,乔拓云都为你提供了便捷的方案。无需复杂的编程技术,通过套用模板的方式,即可快速打造专属小程序。 在线访问乔拓云官方网站,免费注册账号后,即可进入商城小程序的…