• Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)


    前言:在我的上一篇Linux博客我已经讲了基础指令和权限,现在我们来学习如何在Linux上运行和执行代码

    目录

    一,yum

    二,vim

    1)命令行模式

    2)插入模式

    3)底行模式

    三,gcc/g++

    四,makefile


    一,yum

    yum是Linux中的软件包管理器,软件包是有人一些人写好的代码和程序作出软件包放到服务器上,我们使用yum就能获取别人编译好的软件,相当于手机里面的应用商店,我们可以用这个去下载东西。

    那我们怎么去去下载呢?

    1. yum install -y lrzsz
    2. ## install 代表安装 -y 代表自动安装 lrzsz是一个软件安装包

    重要的软件包:lrzsz

    这个软件包支持我们将Linux和window里面的文件进行互传,rz   支持我们通过拖拽的方式将window里面的文件传到Linux里面,sz   +文件  可以将Linux里面的文件传输到window里面

    1. rz
    2. #可以通过window图形化界面文件的方式传输,支持拖拽
    3. sz /home/test.c
    4. #以为Linux一切皆文件,所以我们无法通过拖拽传输,必需加上路径

    以后如果我们发现有无法发现此指令的错误提示,我们可以百度搜索出该指令的软件包,然后使用yum安装

    二,vim

    vim是Linux中打开文件的指令,在Linux中一切皆文件,我们无法不通过指令就直接进入文件的内部,而   vim  就是一个打开文件的指令

    使用方法

    1. vim /root/test.c
    2. #vim 文件路径

    打开之后会是一个这样的样子,我们无法立马改动,只能查看,三大模式中的命令行模式

    1)命令行模式

    在这个模式下我们只能查看,但无法改动文件里面的内容,但这个模式是我们想要切换到其他模式的中介,也就是说,想要切换到其他模式我们首先要切换到这个模式

    2)插入模式

    插入模式顾名思义,就是能够进行编辑的模式,在这个模式下,有很多有用的快捷键助我们编辑

    H:光标向左边移动一格

    L:光标向右移动一格

    J:光标向下移动一格

    K:光标向上移动一格

    之所以有上面几个快捷键是因为以前没有上下左右键,这个是当年老式键盘的上下左右

    shift+G:直接到文本的末尾,想象一下如果文本有上万行,一行一行移动要多久,这个有多爽

    数字+shift+G:移动到指定行

    GG:回到文本的开头

    shift+4:移动到当前行的末尾

    shift+6:移动到当前行的首部

    x:删除光标所在的字符

    数字+x:删除光标后指定数目个字符

    X:删除光标前的一个字符

    数字+X:删除光标前的指定个字符

    dd:删除当前行

    数字+dd:删除光标后的指定行数

    yw:复制光标所在位置的字符

    数字+yw:复制光标后的指定数目字符

    yy:复制当前行

    数字+yy:复制光标及光标后的指定数目行

    p:将复制的字符贴到光标所在位置

    u:撤销上一步的操作

    ctrl+r:恢复撤销的动作

    3)底行模式

    进入指令:shift+:

    进入之后光标会移动到最下面那一行

    这个时候我们就可以输入指令了

    set  nu  :这个指令可以标注文件的行数

    数字:直接移动到指定的行

    ?字符:即可查找指定的字符,但是是从当前行开始查找,如果有多个匹配目标,按n可查看下一个匹配目标

    /  字符:也查找字符,但是是从文件第一行开始查找,如果有多个匹配目标,按n可查看下一个匹配目标

    w:保存本次编辑

    q:退出

    补充:vim模式可以添加很多插件,向自动补充括号,高亮光标和所在行,这些插件大家可以百度搜索vim的配置,用起来很方便,助力敲代码!!!

    wq!:强转保存退出,!代表强转,其他的指令也可使用

    三,gcc/g++

    gcc一般用于编译C代码

    g++一般用于编译C++代码

    使用方法

    1. gcc -o test.o test.c
    2. #test.c是编译的目标文件,test.o是形成的可执行文件
    3. ./test.o
    4. #这样就可以执行代码

    接下来是一些你可能用到的操作

    -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面

    -S  编译到汇编语言不进行汇编和链接

    -c  编译到目标代码 -

    o 文件输出到 文件 -static 此选项对生成的文件采用静态链接

    -g 生成调试信息。GNU 调试器可利用该信息。

    -shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.

    -O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高

    -w  不生成任何警告信息。 -Wall 生成所有警告信息

    四,makefile

    首先你想象一个场景,你需要多次编译很多的源代码,如果你手动的一个个编译,我们会累成狗一样,因此Linux给我们提供了一种方法,将我们要做的操作放在里面,我们只要输出一个指令,系统就重复里面的操作,我们就可以节省很多时间,没错那就是makefile

    如何用呢?

    首先我们要创建一个名字叫makefile的文件,Linux对大小写不敏感,我们可以自便。然后我们使用vim打开makefile,我们现在开始讲

    1. test.o:test.c
    2. #目标文件:原文件
    3. 2 gcc -o test.o test.c
    4. #具体操作,目标文件可以用@代替,原文件可以用^代替
    5. 3 .PHONY:clean
    6. #被.PHONY修饰的称为伪目标,伪目标总是默认被执行
    7. 4 clean:
    8. #使用make clean指令可以清理形成的文件和清理工作,因为生成的文件如果没有改变是无法再次形成的
    9. 5 rm -rf test.o

    在使用make的时候我们要注意,make编译一次之后如果文件内容没有发生改变是需要clean一次也就是删除掉形成的可执行文件才能继续make,因为系统无法同时存在两个一样的文件,这里就引出了一个问题,系统是怎么判断文件有没有发生改变的呢?这是因为文件有三个时间属性,modify,access,change。

    modify:是最近文件内容修改的时间

    change:代表最近文件属性修改的时间,一般来说文件内容改变,文件属性就会改变

    access:代表文件最近访问的时间

    每次改动文件都可能会改变文件的这些属性,make通过比较时间来确定文件是不是被改动了,当然如果只是访问了文件,make是不会重新编译文件的。

  • 相关阅读:
    北京小红书kol推广价格是多少?价格影响因素有哪些
    MySQL进阶
    JVM-JVM中对象的结构
    Spring Boot 2.6.x整合Swagger启动失败报错问题解决(治标还治本)
    idea使用Alibaba Cloud Toolkit实现自动部署
    Linux Hadoop平台伪分布式安装(Hive on Spark)
    【Node.js】深度解析搭建后台服务器-http模块
    【Helm三部曲】 Helm 简介及安装
    信号处理与分析-确定性信号的分析
    常用路由交换协议
  • 原文地址:https://blog.csdn.net/m0_74316391/article/details/134314144