• Linux开发工具使用


    一、Linux软件包管理器 yum

    软件包和软件包管理器, 就好比 "App" 和 "应用商店" ,我们现在要安装的yum就是相当于在我们的Linux终端安装一个"应用商店"。
    但使用yum时,我们一定要保证主机(虚拟机)网络畅通!这点也非常好理解,因为在日常操作中我们的手机进入应用商店也是必须要联网的。
    我们可以通过 ping 指令检验网络的速度:

    ping [网址]

    我们这里以www.csdn.com为例:

    1.搜索软件

    在软件商城里下载软件我们一定要进行相关的搜索对不对?我们现在来看看使用yum如何进行相关软件的搜索:

    yum list | grep [软件名]

    [| grep]是以列表的形式列出,[软件名]可以是你想要的软件全名或者部分名。

    这里以 yum list | grep nb 来演示一下:

    2.下载软件

    我们想来下载一下软件,我们输入一下 yum install nb ,现在我们来看一下操作系统给我们的提示
    注意到最后一行,需要我们是 root 才可以下载软件(软件需要下载到root用户目录下的某个文件,然后拷贝到系统中),而之前我们又学过一个指令,让我们能直接行使 root 的权力而不切换到 root 用户—— sudo ,下面我们来看看完整指令:

    sudo yum install [软件名]

     但是当我们执行sudo语句时,可能会产生以下的报错,这是因为系统检测到我们当前用户并没有在 sudoer 这个文件中配置(好比我访问你的私有成员但是我不是友元函数),这个问题我们在上一篇博客中也讲过,或者可以直接跳转到本篇博客的 vim 中会教大家配置。

    3.卸载软件

    卸载软件和下载软件其实都是差不多的,我们还是要以root的身份卸载。

    sudo yum remove [软件名]

    执行 remove 时,系统还会询问是否删除[yes/No]:

    我们还有办法让系统不再询问:sudo yum -y remove [软件名]
    其中,-y 就是直接回答了yes

    4.实践一下

    如果当前用户没有在sudoer文件中,可以直接用root登录,给大家介绍一个好玩的软件:
    sudo yum install sl
    下载好后我们输入sl运行,就会有一辆小火车从屏幕前走过。

    二、Linux编辑器 vim

    我们在windows下编译有VS,而我们之前在Linux下只是学了一个记事本Nano,不禁好奇Linux下没有什么更高级的语言编辑器了吗?当然有,我们先来学习一下vim

    1.认识vim

    vim不只是简单的指令,我们先要来学习一下什么是vim呢?
    vim是一款多模式的编辑器,但是我们只需要学习它的三个模式就好了:

    命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入[插入模式]下,或者进入[末行模式]
    插入模式:只有在[插入模式]下,才可以做文字输入,按[ESC]键可回到命令行模式。
    末行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,[shift+:]即可进入该模式。

    2.vim的基本操作

    进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

    vim test.c

    当我们用vim打开一个文件时,
    1.首先进入的是[命令模式],我们需要手动输入[i]进入[插入模式]。
    2.最后编辑完文本按[Esc]就可以回到命令模式,再按[shift+;]可以进入[底行模式](此时光标也是在最后一行)。
    3.再输入wq(保存并退出)或q!(强制退出,某些时候wq不管用时可用)即可退出文件。、

    3.vim正常模式命令集

    我们再来多讲一些批量化注释和批量去注释化的操作:

    批量化注释:

    批量化去注释:

    4.vim配置sudoers

    5.vim插件

    在VS中我们有自动纠错或者自动补齐等功能,但是我们的vim编辑器就好像最原始的Dec-C++一样,什么功能都没有,这里就要用到我们的一些插件啦,类似游戏里的mod一样,这里我们提供一个链接,但是只能centos7的用户使用,也可以自己去网上搜罗顺手的插件。

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

    三、Linux调试器 gbd

    程序的发布方式有两种,我们在使用VS时也可以看到,分为release版本和debug版本,其中release版本一般是发行版本,而debug版本是程序员进行程序编写测试时的版本。
    在Linux中,gcc/g++编译出的自动是release版本,如果想让其生成debug版本,需要加-g。

    现在我们要聊的就是Linux下进行程序调试的操作,也就是VS中的F10或F11。

    进入调试:gdb binFile (binFile即此次要调试的文件名)
    (gdb都支持简写,以下命令可以写全也可以写首字母)

    退出调试:[ctrl+d]或[quit]调试命令

    list/l [行号]:显示binFile源代码
    (会记录上次显示的末尾,若继续使用则会接着上次的末尾继续往下列,每次列10行)。
    list/l [函数名]:列出某个函数的源代码。
    r / run:运行程序。
    n / next:单条执行(类似于F11)。
    s / step:进入函数调用。
    break / b 行号:在某一行设置断点(类似于F9)。
    delete breakpoints:删除所有断点
    delete breakpoints n:删除序号为n的断点
    disable breakpoints:禁用断点
    enable breakpoints:启用断点
    break [函数名]:在某个函数开头设置断点。
    info break :查看断点信息。
    finish:执行到当前函数返回,然后停下来等待命令。
    print / p:打印表达式的值,通过表达式可以修改变量的值或者调用函数。
    p 变量:打印变量值。
    set var:修改变量的值
    continue / c:从当前位置开始连续而非单步执行程序
    run / r:从开始连续而非单步执行程序
    info / i breakpoints:参看当前设置了哪些断点
    display 变量名:跟踪查看一个变量,每次停下来都显示它的值
    undisplay:取消对先前设置的那些变量的跟踪
    until X行号:跳至X行
    breaktrace / bt:查看各级函数调用及参数
    info(i) locals:查看当前栈帧局部变量的值
    quit:退出gdb

    四、Linux项目自动化构建工具 make/Makefile

    makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率,其中make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

    1.简单认识makefile

    首先我们先来见一下什么是makefile:
    然后我们再随便创建一个C语言文件:

    我们在makefile中编写如下代码:

    然后我们退出以后直接使用命令[make],我们发现系统直接帮我们执行了代码的编译,并形成了名为mytest的可执行文件:

    然后我们再执行[make clean],我们发现,我们刚才生成的可执行程序被删除了:
    有了这些初步认识,我想我们对make和makefile也有了一定的了解,下面我们来讲讲它的结构。

    2.makefile基本结构

    我把makefile文件中分了模块,我们现在逐个来说明。

    依赖关系:依赖方法要对应的若干文件,mytest:test.c

    依赖方法:必须以[Tab]开头(不能是4个空格)对依赖关系进行的相关操作,
                       gcc -o mytest test.c

    目标文件:通过依赖方法生成的文件名称,mytest

    依赖关系列表:test.c,可以为空,若多个文件可用空格分隔(test1.c test2.c)

    .PHONY:其后面的内容会被强制执行

    一些特殊符号的含义:@指代目标文件,^指代依赖关系列表,$可以理解为读取符号

    类似于宏操作:bin目标文件,src依赖关系列表,可直接替换

    3.makefile原理

    初识makefile原理

    1.make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
    2. 如果找到,它会找文件中的第一个目标文件,在上面的例子中,他会找到“mytest”这个文件,并把这个文件作为最终的目标文件。
    3.makefile会自上而下根据依赖关系执行。

    4.如果有多条依赖关系,makefile会依次执行每条关系,如图(类似递归调用)
    这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。

    makefile对最新的可执行程序默认不会再重新生成:
    为什么会这样?提高编译效率。

    那么makefile如何得知这个程序已经被编译过了呢?

    makefile会对比可执行文件的最近修改时间和源文件最近的修改时间。

    makefile是不是很聪明呢?

    ——The End——

  • 相关阅读:
    手握“发展密钥”,TCL科技或迎价值重估?
    在线客服系统源码/在线对话聊天/多商户在线客服系统源码(可机器人自动聊天/支持app公众号网页H5)
    OpenCV图像处理学习十一,图像开操作与闭操作
    2022年java开发面试题整理合集
    新零售革命:可视化助力零售业焕发新生
    微软面试高频算法题解析与代码实现(C++)
    ETLCloud制造业轻量级数据中台解决方案
    纯电动赛道保持高增长,哪十家T-BOX供应商占据主力份额
    STM32MP157汇编流水灯
    网课题库API接口 对接教程
  • 原文地址:https://blog.csdn.net/m0_75186846/article/details/136432734