Linux工具

一、yum

Linux工具_第1张图片

yum可以看作一个客户端(应用商店)、应用程序,它如何知道去哪里下载软件?

Linux工具_第2张图片

yum也是一个指令/程序,可以找到它的安装路径。

Linux工具_第3张图片

在list中可以看到yum能安装的所有软件,通过管道找到想要的,yum install直接安装。

yum remove 删除

Linux工具_第4张图片

Base中内置了下载链接,镜像网站。

官方yum源只能下载被审核过的,也可以使用epel.repo扩展源。

Linux工具_第5张图片

更新yum源就是替换其中的源文件,更新链接。

二、vim的使用

1、操作

三种模式间切换

Linux工具_第6张图片

光标定位  复制yy  粘贴p 剪切dd 撤销u  反撤销Ctrl+r

Linux工具_第7张图片

~切换大小写(一行小写变大写) r替换某几个   R替换模式   x删除一个字符

Linux工具_第8张图片

vs打开多个窗口     ctrl+ww切换

Linux工具_第9张图片

强制保存退出  wq!

2、配置

先创建一个隐藏文件.vimrc

在该文件中添加指令,如set  nu添加行号,行距、提示、高亮等。

一个用户对应一个配置文件,不会相互影响。

三、sudo提权指令

Linux工具_第10张图片

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工具_第11张图片

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是文本编辑器,无法识别二进制

Linux工具_第12张图片

4、链接

生成可执行文件

Linux工具_第13张图片

5、动静态库

C语言的标准库在Linux下可以认为是一个文件,也有自己的路径

Linux工具_第14张图片

Linux工具_第15张图片

lib代表库,c为库名称,后面为类型。(默认只有动态库,没有安装静态库)

(1)库是什么,有什么用?

各种方法的实现都在库中,库是把几个源文件.c经过一定翻译、打包成一个文件。

只需提供个对方一个文件即可,也达到了隐藏源文件的目的(使用库可以省略大量重复工作--造轮子) 

头文件提供方法的声明,库文件提供方法的实现,加上自己写的-->一个自己开发的软件。

(2)动静态链接原理

Linux工具_第16张图片

ldd指令可以查看可执行程序使用的动态库

在Linux中,链接 形成可执行程序时默认使用动态库

动态链接依赖动态库,去找动态库。

静态库链接直接拷贝到目标程序,之后的执行不依赖静态库。

Linux工具_第17张图片

加上-static选项变为静态链接,由于拷贝,生成的.exe也会变大

ldd查看静态链接的程序,显示不是动态可执行。

C和C++的静态库如图

Linux工具_第18张图片

file指令查看是动态还是静态链接

Linux工具_第19张图片

(3)动静态链接的优缺点

Linux工具_第20张图片(4)debug/release

Linux工具_第21张图片

用readelf指令获取debug信息    (ELF二进制格式构成)

Linux工具_第22张图片

你可能感兴趣的:(linux,服务器,centos)