• 【linux】linux开发工具的使用


    一、linux软件管家-yum

    1.1 软件包的概念

    软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系
    在window下我们下载软件的时候可以使用软件市场下载软件,那么在linux中下载软件呢?
    答案是yum
    linux软件下载有三种方式:

    1️⃣ 源码安装:将软件源代码进行编译
    2️⃣ rpm安装:利用linux内置的安装包安装:类型安卓的apk文件
    3️⃣ yum安装: 自己考虑依赖关系,不需要人处理

    第一和第二中安装方式安装需要大量的其它依赖文件,而yum就像一个软件管家。

    1.2 yum的使用

    1.2.1 查看安装包

    指令:yum list
    功能:把linux可以安装的软件全部以list的方式列出来

    在这里插入图片描述
    可以以利用管道筛选
    在这里插入图片描述

    1.2.2 安装软件

    指令:sudo yum install ……
    输入sudo yum install figlet后看看效果:
    在这里插入图片描述

    1.2.3 卸载软件

    指令:sudo yum remove ……
    卸载掉刚刚的软件:
    在这里插入图片描述

    二、linux下的编辑器-vim

    在这里插入图片描述
    vim是linux下一个多模式的编辑工具,分为三种模式:

    1️⃣ 命令模式:这个模式下可以控制光标的移动,可以进行字符的删除,复制,粘贴,替换等命令。正常模式下按i即可进行插入模式
    2️⃣ 插入模式:可以做文字的输入,这个模式下与windows下的txt文件编辑没有区别!直接用就行了!按esc即可退出到正常模式
    3️⃣ 底行模式:输入冒号进入(即shift+;)可以进行文件的保存,退出,查找等其它指令

    指令:vim + 文件名
    功能:使用vim打开文件,如果没有该文件,会自己创建

    输入i进入插入模式就可以写代码了:

    在这里插入图片描述
    如果我们要保存退出的话,就需要按esc进入底行模式了:输入wq即可保存和退出
    在这里插入图片描述

    2.1 插入模式下的命令

    插入模式

    按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件
    按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
    按「o」进入插入模式后,是插入新的一行,从行首开始输入文字

    从插入模式切换为命令模式

    按「ESC」键

    2.2 命令模式下的命令

    光标移动:

    vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
    在这里插入图片描述

    批量注释:

    1️⃣ ctrl + 「v」
    2️⃣ 用「h」、「j」、「k」、「l」选择要注释部分
    在这里插入图片描述
    3️⃣ 按大写的「i」
    4️⃣ 输入"//"
    5️⃣ 按「Esc」
    在这里插入图片描述

    批量取消注释:

    1️⃣ ctrl + 「v」
    2️⃣ 用「h」、「j」、「k」、「l」选择要取消注释部分
    3️⃣ 按「d」
    在这里插入图片描述

    按「^」(shift + 6):移动到光标所在行的“行首”
    按「$」(shift + 4):移动到光标所在行的“行尾”
    在这里插入图片描述
    在这里插入图片描述

    按[gg]:进入到文本起始行
    按「G」(shift + g):移动到文章的最后
    在这里插入图片描述
    在这里插入图片描述

    按「b」:光标回到上个字的开头
    按「w」:光标跳到下个字的开头
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    文本操作:

    「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能
    「yy」:复制光标所在行到缓冲区
    「nyy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字
    「np」:粘贴n行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次撤销
    「ctrl + r」: 撤销的恢复
    在这里插入图片描述
    在这里插入图片描述

    「dd」:删除光标所在行
    「dd + p」:剪切功能
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    「shift + ~」:大写变小写,小写变大写,按住就一直往后替换直到行尾
    在这里插入图片描述

    「x」:每按一次,从左往右删
    「nx」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
    在这里插入图片描述
    在这里插入图片描述

    「X」:大写的X,每按一次,从右向左删
    「nX」:例如,「20X」表示删除光标所在位置的“前面”20个字符
    在这里插入图片描述
    在这里插入图片描述

    「r」:替换光标所在处的字符
    「nr」:替换n个字符
    「R」:替换光标所到之处的字符,直到按下「ESC」键为止
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.3 底行模式的命令

    「set nu」: 在文件中的每一行前面列出行号。
    「set nonu」:关闭行号
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    「vs + 文件名」:多文件操作
    「ctrl + ww」: 让光标跳转
    在这里插入图片描述
    这样就可以把一个文件的内容拷贝/剪切到另一个文件(「dd + p」)

    :wq就可以退出分屏

    2.4 vim的配置

    我们知道,我们要显示行号需要手动输入set nu,每次进入都需要手动设置
    那么,我们能不能刚进文件不需要指令,自动显示行号呢?
    配置方法:在自己的家目录下文件夹中新建一个.vimrc(/etc目录下)
    在新建的文件中写入指令就可以了。
    推荐指令(一键配置):

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

    补充一点:任何配置只会改变自己,不影响别的用户

    三、linux下的编译器-gcc/g++

    gcc是一款可以编译c语言代码的编译器,如果想编译c++代码可以使用g++
    先写一个测试程序:
    在这里插入图片描述
    指令:gcc + 文件
    在这里插入图片描述
    运行方法是:

    ./xxxx

    在这里插入图片描述
    当然也可以绝对路径编译
    在这里插入图片描述

    在学习gcc选项之前,我们先回顾一下c程序的编译过程

    预处理:去注释,展开宏,头文件
    编译:生成汇编代码
    汇编:生成机器二进制代码
    链接:通过链接函数和其它第三方库,生成可执行程序或库文件

    3.1 预处理

    预处理过程:

    gcc -E test.c -o test.i

    说明一下,gcc的 -o 选项可以把输出放在特定的文件,不用-o就会全部显示出来
    在这里插入图片描述
    在这里插入图片描述

    3.2 编译

    编译过程:

    生成汇编语言,这个过程会检查语法是否有错误

    gcc -S test.i -o test.s

    我么也可以从test.c 开始编译。
    在这里插入图片描述

    3.3 汇编

    汇编过程,生成机器代码(乱码),生成可重定向目标文件,不能直接执行

    gcc -c test.s -o test.o

    在这里插入图片描述

    3.4 链接

    我们还需要最后一步链接过程:链接

    gcc test.o -o test

    在这里插入图片描述

    3.4 函数库

    在linux中有两种库:

    动态库:.so(windows是.dll)
    静态库:.a(windows是.lib)

    而链接的过程就是把自己写的c程序和第三方库关联起来。
    那么静态链接和动态链接有什么区别呢?

    静态库是把库文件代码全部导入到我们要编译的程序中
    动态库并没有这样做,而是在程序执行时再进行库链接

    静态库占用内存很大,动态库占用内存小,可以节省系统开销

    在这里插入图片描述
    如果要用静态链接:

    gcc test.c -o test -static

    在这里插入图片描述
    静态库如果不存在,就需要自己下载。

    下载C静态库:

    sudo yum install -y glibc-static

    下载C++静态库:

    sudo yum install -y libstdc+±static

    3.5 g++

    首先要知道g++也能编译c语言

    创建c++文件:

    touch test.cpp

    编译c++:

    g++ test.cpp -o cpp

    在这里插入图片描述

    四、linux调试器-gdb

    在vs下我们调试起来会很容易,但是gdb会比较麻烦。
    如果要调试时,我们在编译时必须让它生成调试信息(-g)(debug信息)

    gcc testgdb.c -o testgdb -g

    进入方法:

    gdb xxx(可执行程序)

    在这里插入图片描述
    如果想要退出就输入:

    quit或者ctrl + d

    常用命令:

    list/l 行号:接着上次的位置往下列,每次默认列10行

    在这里插入图片描述

    这里看到不是从第一行开始显示,我们可以l + 1
    在这里插入图片描述

    b(breakpoint): 设置断点
    disable: 禁用断点
    enable: 启用断点
    d(delete) x :删除序号为x的断点,(不带x会删除所有断点)
    r(run): 运行程序(到断点处)
    n(next): 单条执行(window中的F10)
    s(step): 单条(会进入函数)(window中的F11)
    bt 查看调用堆栈
    info b: 查看断点情况

    在这里插入图片描述
    在这里插入图片描述
    那如果我们想查看其中的值呢?

    display: 跟踪查看一个变量
    undisplay: 取消跟踪

    在这里插入图片描述
    可以看到display展示的值每次都会显示出来,如果我们只想展示一次:

    p(大小写都可以) + 变量

    在这里插入图片描述

    当我们确定这个函数没有问题的时候,我们可以直接跳出函数:

    finish: 执行到当前函数返回(跳过函数)

    在这里插入图片描述
    假如在函数处有个断点,在函数下面有个断点,我们进入函数后想直接跳到下个断点:

    continuing: 跳到下个断点处

    而如果在一个函数内我们想跳过一段代码:

    until + 行数: 跳到指定行

    五、linux下项目自动化构建工具-make/Makefile

    首先要知道make是一个指令,Makefile是一个文件。
    他们共同形成可执行程序。

    通常在一个大型项目中,通常需要编译大量的源文件,我们又不可能一条一条的用gcc编译我们的makefile就可以实现一次性编译,只要设置好对应文件的依赖关系即可。

    什么是依赖关系呢?
    gcc test.c test
    其中test就依赖于test.c

    我们先在当前项目文件夹下新建一个名叫Makefile的文件,对其进行编辑
    格式:

    可执行程序:依赖文件
    gcc 文件 -o 程序

    在这里插入图片描述
    在这里插入图片描述
    项目清理功能:
    在这里插入图片描述

    在这里插入图片描述
    make和clean对应VS中的生成解决方案清理解决方案

    5.1 Makefile的细节

    我们发现我们使用make的时候后面不用加东西,而clean得make clean,这是为什么?

    make扫描makefile文件的时候,默认只生成一个目标依赖关系,一般是第一个。
    所以我们通常把生成可执行程序的步骤放在最前面,再往下解决依赖问题

    .PHONY又是什么呢?

    .PHONY修饰对应的符号(伪目标)总是可执行

    在这里插入图片描述
    可以看到make只能执行一次,而clean总是可以执行。

    5.2 Makefile中的特殊符号

    在这里插入图片描述

    $@ 表示依赖关系中的目标文件(冒号左边)
    $^ 表示文件列表(冒号右边)

    符号会自己替换,跟上面展示的一样。



    纸上得来终觉浅,绝知此事要躬行。

  • 相关阅读:
    云IDE测试案例
    14:00面试,14:06就出来了,问的问题有点变态。。。
    Echarts绘制各种数据可视化图表案例(效果+代码)
    中科大郑烇、杨坚老师《计算机网络-自顶向下方法》课程 第2章 应用层笔记
    如何实现应用程序的身份认证和数据加密?
    prometheus监控外部k8s
    ZYNQ图像处理项目——模板匹配数字识别(3)
    机器学习——梯度下降算法
    [洛谷月赛]终于结束的起点
    Vue3最佳实践 第六章 Pinia,Vuex与axios,VueUse 3(VueUse )
  • 原文地址:https://blog.csdn.net/qq_66314292/article/details/126954155