目录
1. yum:Linux 软件包管理器
1)确保系统安装 yum 这个工具
2)使用yum 进行相关软件的下载
编辑
3)卸载使用yum 下载的相关软件
2.vim 编辑器的使用以及配置
1)vim 的安装
2) vim 的三种模式
3)vim 下相关指令的使用
4)对vim 进行相关的配置
3.gcc / g++ 编译器的使用
1)确保已经安装 gcc / g++ 编译器
2)文件编译的全过程
3) 头文件的简单介绍
4)库文件的简单介绍
5)动,静库的对比
1. yum:Linux 软件包管理器
在Windows操作系统上,大多数都是以图形化界面的方式进行的,一般都是在官网或者对应的应用
商店进行下载,有时候对一个指定软件的下载,还涉及到多个依赖项,需要我们用户自己手动下载
安装对应的依赖项。
对于Linux 操作系统就不一样了,都是以命令行的方式进行的(当然也是支持图形化界面),当我
们下载一个软件的时候,需要找到对应的源程序,经过编译,才能得到可执行程序,但是这样比较
麻烦:应该软件的下载,可能涉及到许多个依赖项,当源代码很大的时候,进行编译是比较消耗时间。
这时候我们就需要用到软件包管理器(yum):通过包管理器我们可以直接进行对应软件的安装
(软件所需要的依赖项以及源代码都已经进行了编译)。此时也不需要我们用户自己去找对应 的
依赖项,使用yum 源,直接一步到位。
可以把软件包管理器理解成一个应用商店,把软件包理解成一个个APP,使用yum 进行指定软件
的下载就好比使用手机进行软件下载一样。
•yum 的工作原理
yum服务器
所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者httpd的形式都以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张"清单",这张"清单""就是描述每个rpm包的spec文件中信息。
yum client端
client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的配置文件(即yum源),这些配置文件指定了yum服务器的地址。yum会定期去"更新"yum服务器上的rpm包"清单",然后把"清单"下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum下面),每次调用yum装包的时候都会去这个cache目录下去找"清单",根据"清单"里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器下载rpm包安装。(前提是不存在rpm包的cache)
yum扩展源:
通俗来讲,yum 可以理解成一个指定 的官方的网站,我们使用yum 下载的东西都是安全的, 当我们下载一些其他的东西时候,可能在yum 源上不存在或者存在一些警告,此时在yum 扩 展源进行下载即可。
下载 yum 扩展源的指令如下:
1)确保系统安装 yum 这个工具
2)使用yum 进行相关软件的下载
语法:
(sudo) yum install 指定的软件
使用yum下载gcc
注意:对于非 root 用户是不具备下载的权限的,此时 sudo 表示对当前的非 root 用户进行权限提
升,使之具有下载软件的权限。(可能有的即使输入 sudo 也表示权限不支持,因为此时没有对非
root 用户进行配置)。
对于非 root 权限提升的相关操作可以查看以下的博客:sudo 进行权限提升
3)卸载使用yum 下载的相关软件
语法:
sudo yum remove +卸载的软件名字
此指令含义:卸载安装的sl这个软件
2.vim 编辑器的使用以及配置
vim 是一种多模式的编辑器。
与vi的区别,简单的说就是对vi的一个升级版本。
1)vim 的安装
yum install vim
2) vim 的三种模式
命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者
到 末行模式。
插入模式: 只有在插入 下,才可以做文字输入,按「 ESC 」键可回到命令行模式。该模式是我们后 面用的最频繁 的编辑模式。 末行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。3)vim 下相关指令的使用
3.1) 光标的移动:gg | 光标定位到文件内容的第一行的开始 |
G | 光标定位到文件内容的最后一行开始 |
nG | 定位光标到指定行的开始(n 是指定的一个数字 >= 1) |
shift + ^ | 光标移动到当前行的开始 |
shift + $ | 光标移动到当前行的结束 |
w | 光标会以单词为基本单位,进行行内跨行的移动(向右移动) |
b | 光标会以单词为基本单位,进行行内跨行的移动(向左移动) |
3.2) 文件内容的复制,粘贴,删除,剪切:
n yy | 以光标所在行为基准,复制光标所在 n行 的内容 |
np | 粘贴 n 行内容到光标所在行的下一行 |
ndd | 删除/ 剪切 n行的内容从光标所在的行开始 |
u | 撤销 |
ctrl +r | 撤销之前的撤销 |
w | 保存 |
q | 退出 |
wq 或 ZZ | 保存并退出 |
q! 或 ZQ | 不保存退出 |
set nu | 显示行号 |
set nonu | 隐藏行号 |
/搜索的文本 | 搜索 |
4)对vim 进行相关的配置
对于vim 来说,他不是一个文本编辑器嘛,在日后不可避免的使用他进行相关代码的编写,但是对
于没有经过配置过的vim 使用起来难免有点挫,比如语法高亮,代码缩进,语法提示,字体大小,
以及字体颜色设置,内容的行号设计等等。
可能对于“小白”来说,我都还不会使用vim ,就让我对vim 进行配置,这难免有点困难,别着急,
咱可以进行相关插件的下载安装。
切换到指定的一个用户(建议非root 用户):执行一下命令
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
按着提示出入对应的root 密码,即可安装成功。
VimForCpp 的卸载:
以安装有此插件的用户身份,执行以下的命令:
bash ~/.VimForCpp/uninstall.sh
对于新手来说,刚开始使用vim 难免有所困难,自己一定要多多练习,熟能生巧哟~~~
3.gcc / g++ 编译器的使用
我们既然已经会使用vim 进行相关代码的编写,接下来就需要知道如何对已经编写好的代码进行编
译,直至生产可执行的文件。
1)确保已经安装 gcc / g++ 编译器
sudo yum install gcc / g++
2)文件编译的全过程
2.1)预编译阶段:主要进行头文件的展开,宏替换,去掉注释,条件编译等工作
对应的指令:
gcc -E test.c -o test.i
此指令的解释:告诉编译器对test.c 这个文件 执行预编译的任务,把预编译之后生成的文件内容
存放在test.i这个文件里面。
对应的执行效果见下:
2)编译阶段:进行语法分析、词法分析和语义分析,并且将代码优化后产生相应的汇编代码文件
对应的指令:
gcc -S test.i -o test.s
指令的解释:告诉编译器对test.i这个文件进行编译并把生产的内容放在test.s这个文件里面
3)汇编阶段:主要是把的汇编文件生成对应的目标文件
对应指令:
gcc -c test.s -o test.o
指令解释:告诉编译器对汇编文件test.s 执行汇编生成对应的目标文件test.o
4)链接:主要是把目标文件与对应的库文件进行链接生成对应的可执行程序(注意:模板文件并不
是一个可执行的文件)
对应的指令:
gcc test.o -o test.exe
指令的解释:对目标文件执行链接生成对应的可执行文件。
4.1)链接分为动态链接和静态链接
动态链接与静态链接的区别:
动态链接是在程序执行的时候才进行链接,并且动态链接生成对应的
文件体积相比较于静态链接形成的文件体积小。
静态链接:是在形成可执行程序之前进行链接,因为需要把对应的库文件内容拷贝到当前文件下。
4.2) 静态库的安装:
3) 头文件的简单介绍
首先思考以下的问题:
为什么我们可以在 Windows 或者Linux 上面进行开发呢???
首先我们必选先安装对应的软件:VS2022,VScode,Pycharm 等等。
其次我们需要具备相关的头文件以及库文件。
在Linux 上面,对应的头文件默认是存放在 /usr/include 这个目录
4)库文件的简单介绍
在Linux 上面,库文件默认是存放在 / lib64这个目录下的
以下是截取的部分库文件
对于库文件又分为:静态的库文件和动态的库文件
Linux 上面的库文件在书写形式上的构成: lib(前缀)+ 库的名字 + 后缀
Linux库文件的扩展名(后缀)只有2种形式: .so(动态库) .a(静态库)
Windows 库文件的扩展名: .dll(动态库) .lib(静态库)
库其实是把每个源文件进行编译,再打包封装形成一个大的库文件,以供用户的使用。
5)动,静库的对比
动态库:共享的,比较节省资源(磁盘空间,网络空间,内存空间);所占体积较小。
静态库:比较消耗资源;不依赖库,可以独立运行。
编译器在进行链接的时候默认是优先进行动态链接的,当动态库不存在的时候,再进行静态链接
当我们指定链接就以静态链接的时候,若没有静态库,此时编译报错;静态库存在指向静态链接,
而且只进行一次静态链接。
对当前指令的深入认识:首先指定以静态链接的方式;同时也改变了链接的优先级,此时执行链接
的时候对所有的库文件都是以静态链接方式进行的。
查看程序的链接方式:
file 可执行程序的文件名
结语:
以上是对Linux 系统上用到的部分工具的简单介绍,感兴趣的友友们,可以进行深入的研究与讨
论。对于这部分的知识我们需要勤于练习