| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 【Linux】常用工具的使用 -> 正文阅读 |
|
[开发工具]【Linux】常用工具的使用 |
一、vim(编辑器)? ? ? ? vim有三种比较基础的模式:普通模式、插入模式、低行模式。 ? ? ? ? 在普通模式下按 i 进入插入模式,只有在插入模式下才能进行文字的输入,按ESC可以返回普通模式。 ????????在普通模式下 按 shift+: ,进入低行模式,可以进行文件的保存和退出,也可以进行文本的替换,查找字符串。 ????????底行模式跟平时在Linux下写指令一样,也可以记住历史输入过的指令。 vim常见命令:? ? ? ? 打开一个文件直接使用 vim + 文件名,如果没有此文件也可以进入!保存退出后会自动生成这个文件,所以要注意有时候打开文件的时候,发现是空的要去看看是不是文件名打错了!!!。 ? ? ? ? 打开文件后非常常用的两个操作:w(保存),q(退出),!(强制)。可以单个操作也可以一起使用,需要在插入模式下才能使用。 光标:? ? ? ?? ???????? ? ? ? ? 光标的移动可以使用键盘上的方向键,但是vim默认的移动键是?h(左),j(下),k(上),l(右)。 PS:巧记键盘最左 h,键盘最右 l,jump(往下落),king(王在上)。 gg:光标定位到文件最开始。 shift + g(大写的G):光标定位到结尾。 PS:这两个命令很有用,这里要说明一下,在vim编辑文件的时候,是不能用鼠标滚轮来翻页的! shift + 6 (^):将光标定位到当前行的最开始。 shift + 4 ($):将光标定位到当前行的结尾。 w,b:以单词为单位进行光标的前后移动。?? yy:从光标开始的位置,复制光标所在行。在命令前面加上数字可以进行多行复制,比如 6yy 就是从光标位置复制6行。 p:把复制的数据粘贴到光标所在位置。 dd:将当前光标位置的行剪切(也可以当删除使用)。 shitf + ~:把选中的字符进行,大小写切换。 shift + r(大写的R):替换模式,在不删除字符的情况下,输入新的来替换,按ESC退出。(不是很好用,还要切换模式,不如删了重写) 单输入一个 r:单替换光标处的一个字符。前面输入数字,可以多个字符一起替换,6r就是替换6个字符。 x 或者?(shift+x):小写的x是删除光标当前字符,大小的X是删除光标前面的字符。前面可以加数字删除多个字符。 u:撤销操作,可以当做平时用的Ctrl+z。 ctrl + r:撤销 u 的操作。(撤销撤销操作,但是注意不能撤销自己的操作,撤销自己的操作还是用 u ) 底行命令:set nu/nonu:开启行号,或者取消行号。 vs:开启对比模式(分屏,光标在哪里操作就在哪里),输入q可以退出分屏。? ctrl + ww:分屏模式下跳转光标。? ? ?? 拓展:? ? ? ? vim的操作指令非常多,死记的话也比较难记,建议熟练掌握增、删、改、查就可。? ? ? ? ? ?vim需要在文件进行配置,像输入一个字符就给出可能要的函数这种辅助功能,都需要自己设置。 ? ? ? ? ?不过这里设置起来很麻烦,学习成本也高,而且没多大用,可以使用网上已经有的开源配置。 ? ? ? ? 只需要输入一行命令即可,?方便快捷,记得给星给好评。 二、g++(编译器)? ? ? ? 这里要注意gcc是一个专门用来编译连接C语言程序的编译器。而g++是c++的,g++可以用来编译c语言,反之则不行。 ????????gcc -v,g++ -v 查看版本 程序的编译流程: 程序的翻译:????
????????这里是直接把源文件生成一个可以执行文件test,省略了其他步骤。也可以分解开来观察区别。
????????把代码预处理的结构生成到 mytest.i 文件里面 -E:从现在开始进行程序的翻译,如果预处理完成就停下来。 ? ? ? ? ?这里是预处理后的文件,完成了头文件展开、去注释、宏替换
-S:从现在开始开始进行程序的翻译,如果编译完成就停下来。 ????????生成一个代码转化为汇编的文件。
????????进过汇编后,生成的二进制文件。这个文件不能直接运行。 -c:从现在开始进行程序的翻译,如果汇编完成就停下来。 ? ? ? ? ? ?全是一堆看不懂的二进制代码。
????????程序的链接,生成可执行程序mytest。 ?PS:巧记方法ESc是键盘最左上角的按键,iso是镜像文件后缀。 makefile:? ? ? ? 在Linux下如果每次编译一个文件,都要输入如此多的指令,麻烦而且效率低下,那么这里可以使用makefile来帮忙减少劳动量。 ????????make是一个命令,makefile是一个文件,里面写的就是上面编译连接的指令。一般用的少,主要要学习自动构成makefile的工具,比如Cmake。 编写makefile:a、依赖关系 b、依赖方法 ? ? ? ? 可以直接使用vim来编辑Makefile。? ???????? ????????mytest:mytest.c 就是依赖关系,gcc mytest.c -o mytest 就是依赖方法。下面的clean是伪目标,一般写的是删除文件的指令。 ???????? ? ? ? ? 这里输入make命令就相当于输入了编译链接的指令,会进行程序的编译链接。而输入make clean就可以执行删除的指令,来删除生成的可执行文件。 拓展:? ? ? ? 但是要注意,伪目标总是被执行的,每次make clean都会执行方法。而make指令,如果没有发现程序有改动是不会执行方法的。 makefile是如何知道可执行程序改动过? ????? ????????根据ACM来判断的:A:访问时间 M:修改时间 C:修改属性的时间 ????????makefile检查源文件和可执行程序的时间,如果源文件时间比可执行程序晚了,说明改过源代码,这时候就可以重新生成可执行程序。 ????????如果检查到可执行程序的时间比源文件要晚,说明现在就是最新的,就不能重新生成。 多文件编写:? ? ? ? 这里生成两个文件test.c、test.h,然后生成一个文件main.c在里面调用test.c里面的函数。 ? ? ????????编写Makefile,这里不用注意顺序,会自己去先执行能执行的。这里生成先生成二进制文件,再链接到一起生成可执行程序mytest。 ? ? ? ? ?执行检查一下没有问题。 拓展:动静态库? ? ? ? 在CentOS7里面,库文件在/lib64目录下面,一般访问库有两种方式:1、动态库。2、静态库。 ????????在Linux系统中的文件后缀,.so(动态库) 、 .a(静态库),而在windows系统性中,.dll(动态库)、.lib(静态库) 动态链接:使用动态库里面的方法的时候,需要库文件。占用资源少。 静态链接:将库中的方法的实现,拷贝到我们的可执行程序中!编译好就可以不库文件了。但是占用资源比较多。 ? ? ? ? Linux一般默认使用的是动态链接生成可执行程序。如果要变成静态链接,生成可执行程序的时候,加上-static:使用静态链接的方式生成可执行程序。
PS:一般云上的机器不带静态库,要自己去下载。
三、gdb(调试器)? ? ? ? 写代码难免会发生错误,在vs2019中有报错信息,还可以进行调试,但是在Linux下想调试要单独调试,这里使用的调试器就是gdb。 PS:程序的发布方式有两种debug和release,gcc/g++编译出来的程序默认是release模式的,如果要进行程序的调试,要使用debug模式。
? ? ? ? ?如果是release模式不会出现信息,如果是debug模式会出现以下信息。 ? ????????使用 gdb+程序名 直接开始调试程序。 ?常用命令:q(quit):退出调试。直接使用快捷键ctrl+d也可以退出。 l(list):可以加数字,list 0就从0行开始打印10行代码。 r(run):开始调试,如果没有设置断点,会走完程序(真在调试的时候,再次按r会重新回到打断点的地方重新开始调试) 。 b(break):可以加数字,b18就是在18行打断点。不过这里不能看到在哪里打上了断点。 ? info b:查看断点。 PS:这里断点是有编号的,好用来区分。这里打了一个断点,编号就是1。 d (delete) :d 1,就是删除编号为1的断点。注意后面跟的数字是断点的编号。 n(next) :调试程序,单步步过。(就像vs2019里面的F10) s(step):调试程序,单步步入。(就像vs2019里面的F11) p + 变量名:打印变量内容。() finish:将当前函数跑完,然后停下来。进入到一个函数内部的时候,可以使用这个指令快速走完这个函数。 display:设置长显示,跟踪一个变量,每次停下来都显示一下变量内容。(作用比较像vs2019里面的监视变量。每设置一个变量也会给一个编号,跟断点一样。) undisplay + 编号:取消长显示。 until + 行号:跳转程序到指定行。 c (continue):运行之下一个断点处停下来。(如果打了多个断点) disable/enable + 断点编号:关闭或开启指定编号的断点。(不删除断点) ? ? ? ? ? gdb非常不好用,看个代码还有长度的限制,如果一个项目代码多,使用起来非常麻烦和不方便, 四、yum(下载器)? ? ? ? 前面几个软件,有的在别的版本的系统上可能没有,所以要去自己下载,那么就跟平时在windows系统下下载软件一样,需要下载的工具,而在Linux下可以使用yum。 ????????然后yum有时候下载软件会发现没有下载速度,有时候始终为0,这是因为yum的源使用了外网的源,而中国网络上有墙没法很好的访问外网,这个时候就要把源设置为国内一些开源的源。 ? ? ? ? 而yum的源就是一个配置文件,位置:/etc/yum.repos.d ????????
? ? ? ? ? ?我这里就是腾讯的源,也可以使用其他的源。 yum三板斧:
五、git(版本控制器)? ? ? ? 非常常用且好用的工具,可把写的代码保存到网上的仓库中,方便方便代码的保存和下载。???????? ????????为何叫版本控制器呢?这是因为在工作中,需要多人协作修改编写代码的,而git这个工具可以把一个项目分成多个分支,最后检查代码没问题后,再把代码合并到主分支里面去,而且如果代码还是有错误,还可以进行版本的回溯。 ? ? ? ? 这里可以使用Github来保存项目,也可以使用gitee(码云)。去注册好账号后,新建一个仓库。 ? ? ? ?? ? ? ?然后要需要这里仓库的地址 ? ? ? ? 最后在git里面添加码云的邮箱和密码。
打开.gitconfig增加配置信息: ?
在项目根目录执行命令:
????????执行git需要输入账号密码的命令时会提示输入密码,此时密码会记住,以后再执行类似操作则不需要输入。
? ? ? ? 再把刚刚新建的仓库下载到系统下,把自己写的代码放到仓库里面就可以上传保存了。 git三板斧:
? ? ? ? 提交项目。
? ? ? ? 提交改动到本地,日志一定要写清楚,不用在乎长度,写上改动的详细内容和日期,方便别人看你项目的时候知道你干了什么。 ?
? ? ? ? 同步到远端服务器。 ? ? ? ? ?第一次要输入账号密码。 ? 拓展:
? ? ? ? ? ?注意要在仓库文件夹里面才能查看提交记录。
? ? ? ? 把远程仓库里面的代码与本地的代码进行合并。
? .gitignore????????这个文件里面写的不会被提交到仓库里面,项目里面有些文件不是必须上传的,所以这里添加上不需要上传文件的后缀,减少要上传的空间压力。 ??????? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:53:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |