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动静态库对比

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑马点评-Postman卡住sending Requst原因解决

不知道为什么,用这个c1e1d5的token就会一直卡死,但是换了一个token就解决了,目前不知道为什么 解决了,原来是这个请求下面的函数发生了死循环!!太瓜皮了我超! 把num写成了count,导…

函数(递归)

递归:程序调用自身编程技巧称为递归。 在学习递归前需要粗略的了解一下内存,内存分为三类,分别是栈区、堆区和静态区。对于栈区来说,每调用一次函数都会为本次函数开辟一块空间,然而栈区也是有空间限制的,随…

Golang | Leetcode Golang题解之第242题有效的字母异位词

题目&#xff1a; 题解&#xff1a; func isAnagram(s, t string) bool {if len(s) ! len(t) {return false}cnt : map[rune]int{}for _, ch : range s {cnt[ch]}for _, ch : range t {cnt[ch]--if cnt[ch] < 0 {return false}}return true }

Temporal-Kit 及 Ebsynth-流程

https://www.youtube.com/watch?vBL77HVIviJM 预处理 Ebsynth-流程

全国区块链职业技能大赛第八套区块链产品需求分析与方案设计

任务1-1:区块链产品需求分析与方案设计 医疗健康平台中涉及到医院、医生、患者等参与方,他们需要在区块链医疗健康平台中完成账户注册、身份上链、挂号就诊、查询病例等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于医疗健康平台系统架构,以…

PyTorch实战:深度解析Tensor归一化技巧与应用

PyTorch Tensor 归一化&#xff1a;理解、应用及实现 在机器学习和深度学习中&#xff0c;数据预处理是一个关键的步骤。其中&#xff0c;对于某些情况下&#xff0c;特别是生产的环境&#xff0c;数据归一化是一项必不可少的任务。 在 PyTorch 中&#xff0c;对于 Tensor 的…

【SpringBoot配置文件application.yaml】笔记

详细内容见官方文档Common Application Properties 使用application.yaml进行简单配置 第一步&#xff1a;创建WebDemo第二步&#xff1a;创建application.yaml配置文件注意&#xff1a; 第三步&#xff1a;验证自己创建的yaml文件是否生效测试&#xff1a;思考&#xff1a;如…

算法刷题笔记 八数码(C++实现)

文章目录 题目描述基本思路实现代码 题目描述 在一个33的网格中&#xff0c;1∼8这8个数字和一个x恰好不重不漏地分布在这33的网格中。例如&#xff1a; 1 2 3 x 4 6 7 5 8 在游戏过程中&#xff0c;可以把x与其上、下、左、右四个方向之一的数字交换&#xff08;如果存在&…

MT7628指定分区备份固件

为了避免升级过程突然断电&#xff0c;或者其他不良操作导致的路由器“变砖”。在MT7628使用过程中&#xff0c;我们可以对固件进行备份。 MT7628原厂SDK有关于双备份的选项&#xff0c;选择对应选项后&#xff0c;可对固件进行备份。下面以SKYLAB的SKW92A模组为例进行测试说明…

【专项刷题】— 快排

1、颜色分类 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 创建三个指针&#xff0c;然后把数组分为三个区域遍历代码&#xff1a; class Solution {public void swap(int[] nums, int i, int j){int t nums[i];nums[i] nums[j];nums[j] t;}public void sortCo…

百度网盘Android一二面凉经(2024)

百度网盘Android一二面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《百度网盘Android一二面凉经(2024)》。 面试职位: 网盘主端研发组_Android高级研…

细说MCU用定时器控制单路DAC模块设计和输出锯齿波的实现方法

目录 一、参考工程 二、仅提供不同的配置 1、用定时器控制DAC输出 2、配置定时器参数 三、代码修改 四、 运行并观察显示效果 一、参考工程 本工程依赖作者的文章&#xff1a;细说MCU用单路DAC模块设计和输出锯齿波的实现方法-CSDN博客 https://wenchm.blog.csdn.net/ar…

Python 如何对上万、百万、亿级数据去重?

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 今天我们要一起探索一个让数据工程师、数据科学家和开发者们都头疼的问题&#xff1a;如何对海量数据进行去重。随着数据量的不断增长&#xff0c;我们在处理数据时&#xff0c;去重操作…

要么利用规则,要么打破规则

在这个充满规则和标准的世界里&#xff0c;我们常常被告知要如何生活、如何成功。但事实上&#xff0c;这些规则和标准往往限制了我们的潜力和创造力。本文将探讨如何不被外界规则所束缚&#xff0c;活出自己的风采。 规则的双刃剑 规则和标准可以为社会带来秩序&#xff0c;…

JavaScript进阶之构造函数数据常用函数

目录 一、深入对象1.1 创建对象的三种方式1.2 构造函数1.3 实例成员&静态成员 二、内置构造函数2.1 Object2.2 Array2.3 String常见实例方法2.4 Number 一、深入对象 1.1 创建对象的三种方式 利用对象字面量创建对象利用new object创建对象 const obj new Object({})利用…

SAP 如何修改统驭科目类型

在SAP中&#xff0c;科目设置错了统驭科目类型并且记账了要如何修改&#xff1f; 例如&#xff1a;前期应收账款对应的统驭科目类型前期设置成了供应商&#xff0c;并且供应商用该科目过来账&#xff0c;现在需要调整&#xff0c;想要将供应商调整到客户&#xff0c;科目为当前…

Java | Leetcode Java题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution {public int missingNumber(int[] nums) {int n nums.length;int total n * (n 1) / 2;int arrSum 0;for (int i 0; i < n; i) {arrSum nums[i];}return total - arrSum;} }

ros2--QOS--通信质量

在ros2通信编程中&#xff0c;总有一个和qos相关的参数&#xff1a; publisher: template<typename MessageT, typename AllocatorT, typename PublisherT> std::shared_ptr<PublisherT> Node::create_publisher(const std::string & topic_name,const rclcp…

Linux安装Redis5.0镜像、Mysql8.0镜像

docker 安装Redis &#xff08;全网最详细&#xff1a;附带配置文件&#xff09;_docker pull redis-CSDN博客 Docker实用-安装Mysql8 - 简书 改动&#xff1a; 指定&#xff1a;docker pull mysql:8.0 docker run -d -p 3306:3306 \ --restartalways \ --privilegedtrue \…

088、Python 读取Excel文件及一些操作(使用xlwtxlrd库)

要读取Excel文件&#xff0c;我们需要使用第三方库。 xlrd库是一个常用的读取Excel的第三方库&#xff0c;它同时支持.xls和.xlsx&#xff0c;不过xlrd从版本2.0.0开始不再支持.xlsx的读取&#xff0c;需要单独使用openpyxl。 要使用第三方库&#xff0c;首选需安装&#xff…