LInux工具(2)

目录

1.关于底行模式的一个设置

1.1设置行号

1.2取消行号

2.简单vim配置

2.1简单认识

2.2配置选项

2.3其他说明

3.库的引入

3.1背景知识

3.2对应指令

3.3相关介绍

3.4.o文件和库的链接

3.5静态库的安装和测试

3.6动静态库对比


1.关于底行模式的一个设置

1.1设置行号

这个设置可以让我们在文本编辑器上面书写的代码的前面有行号的标注说明;

1.2取消行号

这个就是回复成为默认的设置,不显示每一行的行号

2.简单vim配置

2.1简单认识

在目录/etc/的下面,有一个名字叫做vimrc 的文件,这个就是系统里面的公共的vim 配置文件,对所有的用户都是起效的;

但是在每一个用户的,目录下面都是可以家里自己的私有的配置的,不会影响其他的人,我们想要进行相关的配置,需要先切换到root目录下面,再通过cd ~指令到达相应的目录下面去;

执行#vim .vimrc#指令打开自己的目录下面的相关文件,进行对应的配置;

2.2配置选项

设置语法高亮#syntax on#

显示行号#set nu#

设置缩进的格数为4#set shiftwidth=4#

为什么这个地方还有相关的对于这个行号的设置,和上面的第一个介绍的行号的显示有什么区别,这个地方进行相关的配置之后,就算我们创建新的文件,这个新的文件上面也会有相应的配置,但是上面的那个命令指示针对于当时所在的文件,并不会对所有的文件全部发挥作用;

配置完成之后就按照三个模式之间的相互切换直接保存退出就可以了,然后我们可以再次进入查看新的效果;

2.3其他说明

其中这个上面介绍的cd ~表示的就是进入/root,我们在进行相关的配置的时候需要在这个/root下面进行配置,但是我们从这个普通用户切换回到root的时候,默认的这个位置就是root里面的zzy(因为我们切换之前就是在这个zzy目录下面的,切换完之后还是在这个/home/zzy目录下面,这个是普通用户的家目录,而不是root用户的家目录,我们想要直接切换到root里面的家目录,就需要在切换指令su -root,就是在这个root前面多加上了一个短杠,这个短杠不是和root连着的,两个之间是有一个空格的,当然我们也可以不添加这个短杠,在使用这个cd ~切换到家目录下面去)反正就是我们需要在这个时候使用cd ~指令切换到/root这个路径和下面进行相关的操作;

3.库的引入

3.1背景知识

这个背景知识就是程序执行的环节,包括这个预处理,编译,汇编,执行,这个预处理就是这个宏替换掉,头文件展开,注释取消掉,编译的话就是生成程序的汇编指令,汇编就是把这个汇编指令生成这个机器可以识别的指令,链接就是把这个库和目标文件连接起来,因为这个目标文件是不可以直接执行的,需要和库连接起来才可以执行;

3.2对应指令

这个下面是一共展示出来了4组,分别对应上面的这四个过程,test.c就是我们需要运行的程序,test.i就是经过预处理之后生成的文件-E指令的作用就是让这个过程经历了预处理之后停下来就不要继续向下执行了,我们一般把这个生成的预处理之后的文件叫做.i文件;

以此类推,这个-S的作用就是让这个.i文件经过这个编译过程之后停止下来,不要向后继续执行了,这个过程执行后生成的文件我们一般使用.s进行命名,-o就是一个指令,整个过程都是不变的,后面跟的就是生成的文件的名字;

-c就是编译后文件经过汇编就停止,汇编生成的文件一般是.o文件,gcc使我们对于这个文件进行编译的过程;vim是查看这个每一个步骤生成的文件的内容;.o文件的全称叫做可重定向目标的二进制文件,我们平常简称为目标文件;

3.3相关介绍

C语言里面的库就是一个标准库,库里面有这个静态库和动态库

libc.so这个里面的lib就是前缀,.so就是后缀,这个名字实际上只有c,这个名字实际上是很短的(这个就是库自己的命名规则);

我们的系统上面,默认只会安装动态库,静态库是没有的;

编译型语言,下载安装包,一定会安装头文件和库文件,这样编译器才会认识,我们才可以使用相关的方法(方法的实现就是在库里面的),库就是把我们的源文件经过翻译打包,只提供一个文件,把源文件隐藏起来,增强这个代码的安全性;

头文件提供方法的声明,库文件实现方法的实现,加上我们写的代码,就可以形成可执行程序(软件),库的作用就是让我们站在巨人的肩膀上,减少我们去做重复的工作;

3.4.o文件和库的链接

动态链接:动态库也叫做共享库,动态库不能确实,一旦动态库缺失,不只是影响一个程序,很多的程序都无法正常执行;这个地方其实蛋哥是讲了一个也别形象的故事的,但是这个故事比较长,这里我就不再赘述了,动态库的就是我们的程序执行到某一个步骤的时候,这个时候的程序需要到这个静态库里执行一些步骤(这个步骤是这个程序自身没有办法独立完成的),因为每一次执行到这个位置就会跳转到库里面去,因此这个动态库一旦消失,这个很多的程序就会受到影响而没有办法执行;

静态链接:这个和动态的区别就在于,我们的程序执行到这个无法独立完成的步骤的时候,这个时候会把这个静态库里面的东西拷贝到这个程序里面去,即使这个静态库消失了,但是这个静态库里面我们需要的东西已经被拷贝到我们的程序里面了,这个时候我们的程序的执行是不会受到影响的,这个也是动态库和静态库的区别;

3.5静态库的安装和测试

动态链接调用动态库,默认的话也是使用的动态库,静态链接使用静态库,这个也是需要相互匹配的,但是我们可以修改这个默认的方式,就是需要额外的标注一下;

但是这个前提是我们的系统里面已经安装上这个静态库,但是没有操作的话这个系统里面只有动态库,需要我们自己手动的进行安装;

C语言静态库:

C++静态库:

上面的这两个静态库我们都可以在自己的云服务器上面安装一下;

我们不想使用动态库,这个时候我们可以备注使用我们自己安装上去的静态库,后面加上这个-static标注;

我们通过ll指令可以看到这个静态库的文件是比较大的,所以一般我们不会使用静态库,使用默认的动态库就可以了;

3.6动静态库对比

动态库叫做共享库,有效的节省资源,形成的可执行程序体积小,从而节省这个磁盘的空间,未来的时候,我们的可执行程序要加载到内存里面,这个就可以变相的节省内存,此外可以节省网络空间,但是缺点就是一旦动态库缺失,很多的程序就不可以执行;

静态库,不依赖,程序可以独立的执行(因为对应的库里面的文件已经被拷贝到我们的程序里面了),但是体积大,比较消耗资源(内存,网络空间等等);

相关推荐
懒羊羊大王呀13 分钟前
Ubuntu20.04中MySQL的安装和配置
linux·mysql·ubuntu
浅安的邂逅19 分钟前
Ubuntu apt-get安装-报错:尝试“apt --fix-broken install”有未能满足的依赖关系,几种解决办法
linux·ubuntu·apt install
鸡鸭扣33 分钟前
25年春招:米哈游运维开发一面总结
运维·面试·求职招聘·运维开发·面经·sre·米哈游
Auv开心34 分钟前
ubuntu22.04和ubuntu20.04 的ssh配置不然repo init失败
运维·ssh
SZ1701102311 小时前
IGP(Interior Gateway Protocol,内部网关协议)
运维·服务器·gateway
moxiaoran57531 小时前
Spring Cloud Gateway 动态路由实现方案
运维·服务器·前端
知之则吱吱1 小时前
亚马逊云服务器(AWS)会限制用户使用吗?深度解读AWS资源政策
服务器·经验分享
运维日常手记1 小时前
最新1.33.1 k8s高可用集群搭建(免翻墙)
运维
爱瑞瑞1 小时前
🐧深入浅出的认识 Linux 指令
linux·shell
星哥说事2 小时前
开源综合性网络安全检测和运维工具-TscanClient
运维·web安全·开源