首页 > 系统相关 >【Linux】Linux开发必备六大工具之代码、编译、多人协作开发工具

【Linux】Linux开发必备六大工具之代码、编译、多人协作开发工具

时间:2025-01-22 19:04:19浏览次数:3  
标签:文件 git 必备 模式 vim 开发工具 num Linux 链接

在这里插入图片描述

个人主页~


我们学习Linux是为了什么呢?当然是为了更好的开发,所以我们终于来到了开发之前的一个环节,学完该基础环节,我们就可以上手进行开发了,激动~

Linux开发必备工具

一、代码工具–vim

1、vim基本概念

vim我们主要使用三种模式,分别是命令模式、插入模式和底行模式

命令模式:用户所有的输入都会被认为是命令,可以控制屏幕光标的移动,字符、字、行删除,可以按i进入插入模式或按:进入底行模式

插入模式:用户所有的输入都会被认为是文本输入,按esc切换到命令模式

底行模式:用户用来进行文件保存或退出,进行文件替换,找字符串,列出行号等操作,按esc切换到命令模式

以下是vim的所有模式,共12种,六种basic modes,六种additional modes,在底行模式输入help vim-modes可以查看
在这里插入图片描述

2、vim操作

(1)命令模式

正常我们使用vim的时候,进入就是命令模式,下面是常用的命令

命令作用
gg定位光标到文章开始
G定位光标到文章最后
num+G定位光标到num行行首
$定位光标到当前行结尾
^定位光标到当前行开始
w,b光标按照单词进行行内跨行,进行移动
h,j,k,l光标左,下,上,右
(num)yy复制光标所在(num)行
(num)dd剪切、删除(num行)
(num)p粘贴(num重复行)到光标所在行下一行
u撤销
ctrl+r反撤销
~大小写转换
(num)r对光标字符以及之后的所有字符进行批量化替换
R对内容进行整体替换,也是一种模式,相当于是我们常用的第四种模式
(num)x对光标字符之后的字符进行删除

在这里插入图片描述

(2)插入模式

插入模式没啥可说的,进入插入模式就可以在文本中进行编辑了,此时输入的字符都会在文本中呈现出来的
在这里插入图片描述

(3)底行模式

命令作用
set nu列出文件每一行行号
(num)在底行模式下直接输入一个数字num直接转到num行
/+字符类似于前面在命令中说的less命令的查找,/查找字符是往后查找,如果查找到的关键字不是你想要的,那么可以移植点按n键往后继续找
?+字符同上,往后找
w保存文件
q退出文件
q!强制退出
wq保存退出
wq!强制保存退出

在这里插入图片描述

3、配置vim

我们没有配置的vim是不好用的,这个不好用指的是它并不是一个写代码的环境,因为它原本也只是一个文本编辑器,配置一下有利于我们进行代码的写入,所以以后写文本文件我们用nano,写代码就用vim

我们的vim配置都在隐藏文件.vimrc中在这里插入图片描述
一般我们推荐直接一键化配置vim,不要自己去配置了,很麻烦,在Linux下输入以下命令然后输入root密码就一键配置了,大佬写好的直接用很香,安装完成后重启一下shell就好了

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

二、编译工具–gcc/g++编译器

这里只讲gcc,因为g++跟gcc指令基本差不多,而C语言作为基础语言大家更方便学习

1、程序翻译过程

c程序的翻译分为预处理、编译、汇编、链接四个部分,这里我们可以穿插新内容简单回忆一下,有兴趣大家可以看看我以前写的有关这部分的blog

C语言预处理~
C语言编译和链接~

预处理阶段主要就是进行宏替换,生成.i文件
编译阶段检查代码规范性、语法错误,生成.s文件
汇编阶段生成机器可识别代码,生成.o文件
链接阶段链接库文件生成可执行程序

在这里插入图片描述
在图片中我们可以直观的看到,test.c经过预处理后,生成test.i,文件大小变大了特别多,这就是宏替换,大量头文件的包含引入,然后经过编译,文件大小变小,然后汇编,由汇编代码生成二进制编码,大小变大,再然后就是链接库生成可执行文件

这里的库是函数库,因为像printf这样的函数,在我们的C程序中没有实现,并且在stdio.h中也只有printf的声明而没有实现,那么printf函数是在哪里实现的呢?答案就是函数库
函数库分为动态库和静态库两种,静态库在链接阶段,会将库中被程序使用的目标文件(包含函数的实现代码等)提取出来,与程序自身的目标文件组合在一起,生成最终的可执行文件,这样做的好处是,可执行文件相对独立,不依赖外部的库文件就可以运行,因为所需的库代码已经包含在其中了,坏处就是文件太大了,动态库的链接又分为加载时链接和运行时链接两种情况,但总的来说我们用一个简单的方式来理解,就是相当于在程序中放了一个链接,这里的链接就是我们平常说的地址链接,它可以找到动态库,然后在使用某个函数的时候再向外寻找,这样做的好处就是文件小,坏处就是可执行文件必须依赖外部的库文件运行,一旦该库文件消失或者换了位置,那么它就不可运行,并且其他依赖该库文件的程序也会不可运行

我们正常进行翻译的时候是动态链接的,如果需要静态链接就在后面加上-static
在这里插入图片描述
我们可以明显看出静态链接的文件比动态链接的文件要大100倍,但是我们发现为什么test1比test.c也大了100多倍这么多呢?其实上面所说的动态链接不是纯动态链接,而是一部分动态一部分静态,是混合的

2、动静态库注意事项

如果我们没有静态库是不能完成静态库链接操作的

如果我们没有动态库,只有静态库,我们不进行-static链接,按照默认动态链接的指令进行也是可以链接的,链接的是静态库,因为指令在默认条件下是进行动态链接的,优先搜索动态库,如果没有那就搜索静态库,如果都没有那就链接失败

在我们正常gcc test.c -o test指令下,不是纯动态链接的,而是混合的,就是有动态链接的部分,有静态链接的部分,而加上-static就是全部静态链接了

3、gcc使用

gcc [选项1] 要编译的文件 [选项2] [目标文件]

选项1作用
-E只激活预处理
-S编译到汇编语言不进行汇编和链接
-c编译到目标代码
选项2作用
-o文件输出到文件

三、多人写作开发工具–git

1、简介

git是一个开源的分布式版本控制系统,用于高效地管理软件开发过程中的代码版本,git允许开发人员将代码仓库克隆到本地,在本地进行开发、提交、推送等操作,并且可以方便地与远程仓库进行同步,每个开发者都拥有完整的代码仓库副本,包括所有的版本历史和元数据,这使得开发过程更加独立和灵活

与集中式版本控制系统不同,git没有单一的中心服务器,每个开发者的本地机器上都有一个完整的版本库,包含了所有的提交历史和版本信息。这意味着开发者可以在本地进行完整的开发流程,包括提交、暂存等操作,而无需依赖网络连接到中心服务器

git采用了一种称为 “快照” 的方式来存储版本信息,它会在每次提交时为整个项目创建一个快照,记录下所有文件的状态,同时,git使用了高效的压缩算法和数据结构来存储这些快照,大大减少了存储空间的占用,并且能够快速地进行版本的切换、合并等操作

git的分支创建和切换非常轻量级,几乎可以瞬间完成。开发者可以轻松地创建多个分支,用于不同的开发任务,如功能开发、修复 bug 等。各个分支之间相互独立,开发人员可以在不同分支上并行开发,然后根据需要将分支合并到主分支或其他分支上。

主要用于团队协作开发代码备份与恢复开源项目管理

2、git使用

相信大家都不陌生Github和Gitee,前者是全球最大的开源代码托管平台,后者是面向国内开发者的代码托管平台,有很多的开源项目和学习资料我们可以从中下载,我们自己也可以开源项目共其他人查看,Github作为一个外国网站,本身访问不太稳定,需要借助一定的“技术”才能使用,所以我们在这里展示一下Gitee的使用

在这里插入图片描述

在这里插入图片描述

新增仓库时下方三个按钮都是可选可不选的,一般来说,如果我们的仓库是纯某个文件的仓库,我们都会将初始化仓库中的.gitignore勾选,它的作用是将文本中有的后缀名在我们推送到远端仓库时全部默认不推送
在这里插入图片描述
然后就是readme文件,这个文件简单就是说明书,对于开源项目是必不可少的

通过git clone+远端仓库链接将远端仓库克隆下来
在这里插入图片描述
在这里插入图片描述
在这里创建文件,然后写文件,然后我们如果想要打包好开源到Gitee上的该仓库上我们需要先将加入待定区,使用

git add+文件名

将文件加入待定区,然后

git commit -m “备注”

允许发送到远程仓库,最后

git push

发送到远端仓库,其中要在备注中写明这个文件是啥
在这里插入图片描述


今日分享就到这里了~
在这里插入图片描述

标签:文件,git,必备,模式,vim,开发工具,num,Linux,链接
From: https://blog.csdn.net/s_little_monster/article/details/145146683

相关文章

  • Linux usb【4】- gadget configfs介绍
    本文介绍如何通过configfs的方式创建一些usb设备,我们以uac2设备为例介绍一下整个流程。首先看一下driver/usb/gadget/function下的所有文件都是使用DECLARE_USB_FUNCTION_INIT注册一个usb_function_driver。613 #defineDECLARE_USB_FUNCTION(_name,_inst_alloc,_func_......
  • Linux usb【3】- gadget驱动介绍
    本文基于新思的dwc3usb控制器,介绍usb的gadget驱动,kernel版本为5.15。probe刚开始和前面介绍的host驱动是一样的,只不过在dwc3_core_init_mode函数中会选择gadget初始化dwc3_gadget_init。1214 staticintdwc3_core_init_mode(structdwc3*dwc)1215 {1216  structd......
  • LibXL 4.5.1 for win/linux/Mac/iOS Patch
    DirectreadingandwritingExcelfilesLibXLisalibrarythatcanreadandwriteExcelfiles.Itdoesn'trequireMicrosoftExceland.NETframework,combinesaneasytouseandpowerfulfeatures.LibrarycanbeusedtoGenerateanewspreadsheetfro......
  • Linux升级rsync
    介绍:查看当前版本: rsync --version找到安装目录:whichrsync在管网处下载最新tar.gz包,解压后,进入目录,依次执行以下命令:第一步:######配置 sudo ./configure--prefix=/usr/local######升级新版本可能会报错:Configurefoundthefollowingissues:-Failedtofindxx......
  • linux文件IO:select
    select电平触发#include<sys/time.h>#include<sys/types.h>#include<unistd.h>intselect(intn,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout);在指定的文件描述符准备好I/O之前或超过一定时间限制,select调用会被阻塞readfds文件描......
  • How to set up File Transfer Protocol(FTP) server in Linux
    Step1:InstallvsftpdTosetupanFTPserverinLinux,first,youhavetoensurevsftpdisinstalled:ForUbuntu/Debian:sudoaptupdatesudoaptinstallvsftpd-yForCentOS/RHEL:sudoyuminstallvsftpd-yStep2:BasicConfigurationofvsftpdConfigu......
  • 如何在 Linux 服务器上设置 FTP 文件传输协议
    第一步:安装vsftpd要在Linux上设置FTP服务器,首先需要确保已安装vsftpd。对于Ubuntu/Debian系统:sudoaptupdatesudoaptinstallvsftpd-y对于CentOS/RHEL系统:sudoyuminstallvsftpd-y第二步:配置vsftpd配置vsftpd以允许基本的FTP连接并设置用户限......
  • Windows和Linux系统安装东方通
    1.Windows系统安装东方通1.1安装jdk1.2下载安装文件及license文件官网:https://www.tongtech.com/sy.html下载windows系统文件1.3在D盘下面创建TongWeb文件夹,上传文件1.4解压文件,把license文件放到bin同级目录下1.5启动,进入bin目录下启动双击:startserver.bat停止......
  • Arch Linux - 中文乱码问题
    解决中文乱码问题,可以参考这这篇文章:Localization/SimplifiedChinese主要分成3个步骤locale配置中文字体不同软件的字体设置locale配置locale配置,其实是配置locale的环境变量LANGUAGELC_ALLLC_xxx,xxx表示不同的分类:CTYPE,TIME,...LANG可以执行命令locale查......
  • 一站式云原生支持,Alibaba Cloud Linux性能有多强?
    随着云计算技术的高速发展,企业对操作系统的需求不再局限于传统的服务器环境,而是更加关注与云原生架构的兼容性、性能优化以及系统的可扩展性。在这样的背景下,AlibabaCloudLinux应运而生,作为一款由阿里云自主研发的Linux操作系统,它专为云计算环境进行了深度优化,为企业和开发者......