一、yum
yum可以看作一个客户端(应用商店)、应用程序,它如何知道去哪里下载软件?
yum也是一个指令/程序,可以找到它的安装路径。
在list中可以看到yum能安装的所有软件,通过管道找到想要的,yum install直接安装。
yum remove 删除
Base中内置了下载链接,镜像网站。
官方yum源只能下载被审核过的,也可以使用epel.repo扩展源。
更新yum源就是替换其中的源文件,更新链接。
二、vim的使用
1、操作
三种模式间切换
光标定位 复制yy 粘贴p 剪切dd 撤销u 反撤销Ctrl+r
~切换大小写(一行小写变大写) r替换某几个 R替换模式 x删除一个字符
vs打开多个窗口 ctrl+ww切换
强制保存退出 wq!
2、配置
先创建一个隐藏文件.vimrc
在该文件中添加指令,如set nu添加行号,行距、提示、高亮等。
一个用户对应一个配置文件,不会相互影响。
三、sudo提权指令
sudo提权之前,该用户必须添加到信任名单(白名单) sudoers file 的配置文件中
对于user和group都是只读权限,即普通用户不能更改,只能由root指定添加。
四、Linux编译器gcc/g++
1、预处理(4个)
gcc -E xxx.c -o xxx.i
gcc编译的源文件必须以.c结尾 (因为其对应寻找的库是C语言的)
g++则必须以.cpp结尾,否则不能编译
但编译链接后的可程序程序如a.out,只要有可执行权限x即可运行。
C/C++开发前,系统中必须要有相应的头文件、库文件。下载安装VS2022时就会一起下载好。
Linux中,存储在user/include文件下。
可以在使用gcc时添加宏进行条件编译。(源文件中#ifdef DEBUG #else ... #endif)提前写好
在编译时可以加选项,gcc test.c -o test.exe -DEBUG.
注:预处理之后的.i文件仍为C语言
2、编译
形成汇编
gcc -S xxx.i -o xxx.s
全变为汇编指令 call movl等
3、汇编
形成机器可识别的二进制文件
目标文件(可重定向目标二进制文件)
gcc -c xxx.i -o xxx.o vim是文本编辑器,无法识别二进制
4、链接
生成可执行文件
5、动静态库
C语言的标准库在Linux下可以认为是一个文件,也有自己的路径
lib代表库,c为库名称,后面为类型。(默认只有动态库,没有安装静态库)
(1)库是什么,有什么用?
各种方法的实现都在库中,库是把几个源文件.c经过一定翻译、打包成一个文件。
只需提供个对方一个文件即可,也达到了隐藏源文件的目的(使用库可以省略大量重复工作--造轮子)
头文件提供方法的声明,库文件提供方法的实现,加上自己写的-->一个自己开发的软件。
(2)动静态链接原理
ldd指令可以查看可执行程序使用的动态库
在Linux中,链接 形成可执行程序时默认使用动态库
动态链接依赖动态库,去找动态库。
静态库链接直接拷贝到目标程序,之后的执行不依赖静态库。
加上-static选项变为静态链接,由于拷贝,生成的.exe也会变大
ldd查看静态链接的程序,显示不是动态可执行。
C和C++的静态库如图
file指令查看是动态还是静态链接
(3)动静态链接的优缺点
(4)debug/release
用readelf指令获取debug信息 (ELF二进制格式构成)