Linux软件包管理yum

Linux软件包管理yum

什么是软件包

1.在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。 2.将一些常用的软件提前编译好,做成软件包,放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包。直接进行安装。 3.软件包和软件管理器就好比Appstore 4.yum是Linux下常用的一种包管理器。主要应用在centos,fedora,redhat上。

关于rzsz :用于win和远端Linux机器通过xshell传输文件。安装完毕后可以通过拖拽的方式来传递文件 注意事项: 关于yum的所有操作,必须在有网络的条件下进行: 检测命令行:ping指令

1dca50d6f0d04005961d9e38abc4cdc4.png 

 

 

查看软件包 通过yum list命令可以罗列出当前一共有哪些软件包,可恨据许哟啊使用grep命令,筛选出具有关键字的包。
fc7ffaf29a2b4d979e733074e2bc744c.png

 

 


注意事项:

1.软件包名称,主版本号,次版本号,源程序发行号-软件包的发行号,主机平台,cpu架构。 2.“x86_64”后缀表示64为系统的安装包,“i686”后缀表示32位系统安装包。 3.“el8”表示的是操作系统发行的版本。 4.最后一列,base表示的是“软件源”的名称,类似于“华为应用商店”。

如何安装软件

通过yum进行安装

590c281f94ed45a7bcf6ab576529b455.png

 

 

注意: 1.安装需要向系统目录写入文件,所以一般要在sudo或者root账户下完成。 2.yum一次只能进行一个下载任务,如果在一个软件下载的过程中去下载另一个可能会报错。


如何卸载软件

a378efd0fcc946a8be56465d874de270.png


 

Linux开发工具

vim的使用

vim是什么? 答:编译器 为什么学vim? 答:有时候,需要在生成环境下,快速定位问题,甚至需要快速修改代码。

1.vim的基本概念

常用的三种模式功能
正常/普通/命令模式控制光标的移动,字符,字,或者行的删除,移动复制某一区段及进入insert模式,或者last line 模式
插入模式只有在insert模式下,才能进行文字的输入,按[esc]即可退回到命令行模式
末行模式文件保存及退出,也可进行文件替换,找字符串,列出行号等操作。在命令行模式下,使用shift + :即可进入

2.vim的基本操作

1.

 $ vim test.cpp

即可进入vim,此时是正常模式。

2.[正常模式] --->[插入模式] a ---> 光标的下一位插入 i --->光标处插入 o ----> 光标另起下一行插入。

3.[插入模式] --->[正常模式]  无脑[esc] 4.[正常模式] ----> [末行模式]  [shift + :] 5.退出及保存 在末行模式下 w(保存当前文件) q(退出vim) 其中 可以使用[q!]强制退出。

3.vim的正常命令集

命令说明
移动光标可以使用上下左右键,也可使用[h j k l],对应[上 下 左 右]。
G移动到文章末尾
$移动至光标所在行的末尾
^移动至光标所在行的行首
gg进入文本的末端
shift g进入文本末端
yy复制当前行
p粘贴当前行的后面,[np 可批量化操作]
dd剪切(删除)当前行 [ndd]
u撤销刚刚的操作
CTRL r针对u操作,进行再次撤销
w,b向后,向前在一行以单词为单位进行光标移动
h,j,k,l左 下 上 后
shift + `大小写快速切换
r替换光标所在的字符 [nr]
shift+ rR:批量化操作
x删除光标所在字符 [nx]

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

由代码到可执行程序

1.预处理 2.编译 3.汇编 4.链接

各个环节的主要任务及命令行

环节任务指令
预处理宏定义替换,头文件展开,条件编译,去注释等gcc _E test.c -o test.i
编译检测代码的规范性,并将代码翻译成汇编语言gcc -S test.i -o test.s
汇编将.s文件转换成.o的二进制目标文件gcc -c test.s -o test.o
链接生成可执行文件或者库文件gcc test.o -o test

示例:

4b40e79182c0417da7102ff75260f2cc.png

c9c63a4fd02340ee813937a00de17fbf.png 

e6639229187c4b7288e9257e4649bd15.png 

38e9079dc5b04fe8abb9db3bcabf7642.png 

b57a6ab473974775b58a139b6c4d2f62.png 

12f43217d0f44a09afeadc1929b5fcfc.png 

补充:数据库 在c的程序中,并没有printf的声明,但是程序却能够跑起来。 原因:系统把这些函数都实现了,并命名为"lib.so.6"的库文件里面去了。在没有特定指定时。gcc会去默认路径下”"usr/lib"下查找“,通过库,完成了对代码的运行。 数据库一般分为静态库与动态库两种

 

 

 

 

 

 静态库动态库
后缀.a.so
区别编译链接时,将库文件全部加入到可执行文件中进行编译程序运行时,链接文件加载入库
特点生成的文件比较大,但是运行一次后,不再需要库文件文件较小,但是每次运行都需要库文件参与,缺少库文件链接会直接die
gcc默认生成的二进制程序,是动态链接。  

gcc选项

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

Linux调试器-gdb使用

Linux下默认生成的可执行程序是release版本,无法调试

 c8bc3e54601a43f98f08f4a86db5e1e6.png

 

-g选项解释
b 行号打断点
info b查看断点
d 编号取消断点
l 行号显示代码
sstep,逐语句(计入断点),类似于vs的F11
nnext 逐过程,类似于vs下的F10
display && undisplay常显示和取消常显示
until 行号跳转至指定行
r运行程序
c从一个断点运行至另一个断点,类似于vs下的 F9 + F5
finish执行完当前函数就等下来

生成一个debug版本的test_g

 00e584f2cf0441158b348492e66d6fa1.png

 

Linux项目自动化构建 -make/Makefile

1.工程文件不计其数,按照类型,功能,模块分在若干文件中。makefile定义了一系列规则来制定工作,文件的编译顺序,那些文件重新编译等。 2.在makefile定义好依赖对象和依赖关系后,只需要一个make就能自动完成编译,提高了效率。 3.make是一条命令,makefile是一个文件。 4.在编译代码的时候,可能存在指令写反导致源代码被覆盖的事情,makefile可以有效解决此类问题。 基本格式

 目标文件 :依赖关系
 //table 依赖方法

举例:

39c1e2ba322248b48874a705535a77df.png4f3627c706864fb4bca39607d1c3af0f.png5cb98bf02b9648518dfa2d72d9dd71c8.pngcb9bd76bd6bd40afad46185af1964d3f.png

 

 

 

 

连续输入make,会生成这样一句话

ff3779c7edf6401ea5579728f184be86.png

 

 

关于.PHONY 是makefile语法格式中的一个关键字 clean被.PHONY修改时,表明:总是被执行的 无论目标文件是否新旧,照样直接执行依赖关系。 问题:makefile是如何识别我的exe/bin是新的还是旧的? 根据对比源文件和可执行程序的最近修改时间,评估是否需要重新生成。

查询指令 stat [文件]

72bb2ee303aa4b36b90076a337283796.pnge81942c16fb24284b2f33e337dfaa216.png

 

 

文件 = 内容(影响Modify)+ 属性(影响Change) 修改文件内容可能会引起Change time的变化。 至于Access读取文件都会引起变化。

Makefile多文件编译

8b5dc31f923d44ba9b11665cef1ed67f.pngafab8254ecf44b0ab3ea61339f124742.png

 

 


编写一个linux程序--进度条

引入:缓冲区: 本质上是一段内存空间,用来临时储存数据的,使用\n可以刷新缓冲区,或者使用fflush(stdout)就可以将缓冲区的数据直接打印出来。 换行 + 回车 使用 “\r" -- 光标移动到本行的最初位置。

 #include<stdio.h>
 #include<unistd.h>
 #include<string.h>
 #define N 101
 #define STYLE '*'
 int main()
 {
    char bar[N];//
    memset(bar,'\0',sizeof(bar));//初始化
   const  char p[] = "|/-\\";//
 ​
    int cnt = 0;
    while(cnt < N)
    {
         printf("[%-100s][%d%%][%c]\r",bar,cnt,p[cnt%4]);
         fflush(stdout);//刷新缓冲区
         bar[cnt++]=STYLE;
         usleep(20000);//ms
    }    
    printf("\n");
    return 0; 
 }                           

在Linux上部署git

安装git

 yum install -y git

如何使用? 1.建立gitte仓库 2.git clone +URL(仓库的http链接)。 3.git add +[文件] 4.git commit -m "有用的日志"。 5.git push

第一次使用,需要配置用户名和邮箱 .gitignore 是一个黑名单,只要加上对应后缀,那么上传时就会自动规避掉带有此后缀的文件。 关于:在网上修改代码,本地不会修改,导致后续上传git引起的错误解决方案。 使用命令行:git pull然后无脑q! 这样就自动合并同步了。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值