Linux开发工具

二、vim编辑器

​ vim是一种多模式编辑器,常见的是三种模式。以下是三种模式及切换方式。在底行模式下,:!wq。!表示强制执行,w表示写入保存,q表示退出。

在这里插入图片描述

命令模式

​ 使用n可以进行性n行操作;

​ 光标定位:

​ gg:定位光标到文本起始行开始的位置;

​ G:定位光标到文本最后一行的开头位置;

​ ng:定位到n行开头;

​ $:光标定位到当前行结尾;(锚点)

​ ^:光标定位到当前行开头;(锚点)

​ w:光标向右移动;

​ b:光标向左移动;

​ hjkl:分别对应光标向左下上右移动;

​ 复制:

​ yy:复制光标所在行的内容;

​ nyy:复制光标开始n行的内容;

​ 粘贴:

​ p:将拷贝内容粘贴到光标的下一行;

​ np:将n份拷贝内容粘贴到光标的下一行;

​ 撤销:

​ u:撤销上次操作;

​ ctrl+r:反撤销;

​ 剪切:

​ dd:剪切光标所在行内容;

​ ndd:剪切光标所在行开始n行的内容;

​ 其他:

​ shift+~:快速大小写转换;

​ nr:将光标当前位置的往后n个字符替换;

​ nx:将光标当前位置的往后n个字符删除;

批量化替换模式

​ 使用R进入,按两下insert键;

插入模式

​ 使用i进入,或者I,或者按一下insert键;

批量选择模式:

​ 使用ctrl+v进入;要注意使用hjkl进行移动,再次进入插入模式要使用I;

多文件模式

​ 使用vs 文件名进入;

​ 使用ctrl+ww实现光标在不同文件的切换;

底行模式

​ 1.!wq:!表示强制执行,w表示写入保存,q表示退出;

​ 2./+文本关键词:搜索功能,搜索文本关键词匹配的子串;

​ 3.!+各种指令操作:在vim里执行各种指令;

​ 4.set nu/nonu:显示行号/去掉行号;

三、编译工具gcc/g++

3.1gcc的使用

​ g++与gcc类似,只是编译.cc/.cpp./cxx结尾的文件,gcc编译的是.c文件。

​ 要注意的是,能够开发是因为安装了相关的头文件和库文件,头文件在/user/include/路径下存放着,库文件在/lib64下存放着;

​ 对一份源代码编译可细分为四个阶段,分别是预处理、编译、汇编、链接;

预处理阶段:

gcc -E test.c -o test.i -g
#这个阶段主要进行了去注释、头文件展开、条件编译、宏替换;
#E表示执行到预处理阶段结束,o表示以此方式命名,D表示定义一个量,用来进行条件编译;生成的.i文件本质上是一个较为干净的源文件,g表示以debug的方式进行编译,会留下许多调试信息;

编译阶段:

gcc -S test.i -o test.s
#这个阶段主要进行了语法检查,符号汇总,生成了汇编文件;
#S表示执行到编译阶段结束

汇编阶段:

gcc -c test.s -o test.o
#这个阶段是将汇编文件转换成二进制文件,形成符号表(注意此时的符号表不一定是有效的)
#c表示执行到汇编阶段结束,.o文件是可重定位目标二进制文件

链接阶段:

gcc test.o -o test.exe
#这个阶段会将多个二进制文件进行连接形成可执行文件或者库文件,进行合并符号表(此时的符号表才是有效的)
#不加选项直接生成的就是可执行程序,Windows下要求可执行程序必须是以.exe后缀结尾的;

​ 条件编译可以实现同时维护专业版和社区版的软件,具体使用不同的版本是使用条件编译就可以对代码进行切割;

3.2、编译完成常用的一些指令

1.od

od 二进制文件名
#进行二进制文件的查看

2.ldd

ldd test.exe
#查看可执行程序的依赖情况

3.file

file 可执行程序
#显示链接方式

4.readelf

readelf 可执行程序
#查看可执行程序的二进制构成,可执行程序一般是elf格式的二进制文件;

5.stat

stat 文件名
#可以查看文件的属性

3.3链接

​ Linux中.so是动态库,.a是静态库,Windows中.dll是动态库,.lib是静态库,库文件其实就是对.o文件进行打包。一般libname.so中name就是库文件的名字。

​ 安装开发包的本质就是安装头文件和对应的库文件,头文件提供声明,库文件提供实现和定义;默认使用的是动态库的方式进行链接。

​ 链接方式分为静态链接和动态链接;

​ 对于动态链接,动态库又被称为共享库,不同的程序都可以访问,只存在一份即可,但是程序对动态库的依赖性较大。

​ 对于静态库,是将库文件的内容拷贝到自己的可执行文件中,用哪些拷贝哪些,依赖性较弱,可以独立运行程序,但是会导致代码膨胀;

​ 形成可执行程序时,默认使用的连接方式是动态链接,所以必须提供动态库,进行静态链接时需要加选项-static;

四、自动化构建工具make/makefile

​ make:一条指令,makefile:是一个当前目录下的文件,通过依赖关系和依赖方法,进行栈结构的推导来完成自动化构建;

​ 注意依赖方法不可以顶格写。可执行程序和源程序的更新是通过时间戳来进行比较的,如果时间戳更新了就可以make重新构建,时间戳不更新,make就不会执行,这是做为了提高编译效率。

​ 如果想让对应的依赖关系总是被执行,.PHONY:伪目标,就会强制执行伪目标。

​ 特殊符号:

@

:表示左边的目标文件,

@ :表示左边的目标文件,

@:表示左边的目标文件,^表示右边的目标文件;

​ 不想让依赖方法回显,可以在依赖方法前面+@;

.PHONY:all
all:tcpserverd tcpclient
tcpclient:TcpClient.cc
**先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里**

**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/03405aff17515ef5ff298ffcea8e2558.png)
![img](https://img-blog.csdnimg.cn/img_convert/0c312da4243b620d080fbacd538fc692.png)
![img](https://img-blog.csdnimg.cn/img_convert/43e63994dec2b6513d5aef2213ec2b6e.png)
![img](https://img-blog.csdnimg.cn/img_convert/ddbb69f325495912ffd29d7ceb395850.png)
![img](https://img-blog.csdnimg.cn/img_convert/648cf3da0ced252cc1807a33a9b42c9b.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

m93SG3j-1714288650475)]
[外链图片转存中...(img-H0OD94Aw-1714288650476)]
[外链图片转存中...(img-tubRUozh-1714288650476)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值