本节目录

  • 总述
  • 1. yum:软件包管理工具
    • 1.1 软件包是什么?
    • 1.2 软件包的操作
      • 1.2.1 查看
      • 1.2.2 安装
      • 1.2.3 卸载
  • 2. vim:linux编辑器
    • 2.1 vim基本概念
      • 2.1.1 什么是vim?
      • 2.2.2 vim 操作模式
    • 2.2 vim基本操作
      • 2.2.1 底行模式下常见操作
      • 2.2.2 普通模式下常见操作
    • 2.3 注意
  • 3. gcc/g++编译器
    • 3.1 功能
    • 3.2 编译过程
    • 3.3 gcc 常见选项:
    • 3.4 选项举例
    • 3.5 其他概念
  • 4 gdb:调试器
    • 4.1 什么是调试器
    • 4.2 常见调试指令
      • 4.2.1 开始调试
      • 4.2.2 流程控制
  • 5. make/makefile:项目自动化构建工具
    • 5.1 makefile是什么
    • 5.2 make是什么
    • 5.3 makefile 编写规则
    • 5.4 make解释执行规则:
    • 5.5 makefile文件
  • 6. git :项目的版本管理工具
    • 6.1 功能
    • 6.2 操作
    • 6.3 举例
    • 6.4 配置默认用户名和密码,不用每次上传代码都要输入用户名密码

总述

  • yum:软件包管理工具,完成第三方工具软件的安装卸载功能
  • vim:编辑器,路奴性写代码的工具
  • g++/gcc:编译器,将高级语言进行编译成及其指令
  • gdb:调试器,调试程序的运行过程
  • make:就是 “makefile“ 项目的自动化构建工具
  • git:项目的版本管理工具

1. yum:软件包管理工具

1.1 软件包是什么?

  • 在linux下安装软件,通常办法是下载程序源代码,并进行编译,最后得到可执行程序。这样就比较麻烦了,于是有人把一些常用的软件提前编译好,做成软件包(就像是Windows上的安装程序)放在一个服务器上,通过包管理器很方便的获取到这个编译好的软件包,可以直接进行安装。
  • 软件包和软件包管理器就和“app"和”应用商店“一样。
  • yum(Yellow dog Updater,Modified)是linux下非常常用的一种包管理器。

1.2 软件包的操作

1.2.1 查看

  • 命令:yum list
  • 功能:查看当前一共有哪些软件包
  • 注意:由于包的数目可能非常多,我们可以使用 yum search vim 命令只筛选出我们需要要的(这里用vim举例)

1.2.2 安装

  • 命令:yum install filename
  • 功能:安装软件
  • 注意:要在具有 root 权限的情况下执行命令。如:sudo yum install lrzsz

1.2.3 卸载

  • 命令:yum remove filename
  • 功能:卸载软件
  • 注意:要在具有 root 权限的情况下执行命令。如:sudo yum remove lrzsz

2. vim:linux编辑器

2.1 vim基本概念

2.1.1 什么是vim?

vim 是编辑器,用于编辑文本,编写代码的工具。因为 vim 的操作是在命令行中,不支持鼠标,因此光标的移动,文本内容的操作都需要命令来完成。因为 vim 是编辑器,所有有HIA具备插入数据的功能,因此 vim 为了实现命令操作和数据插入操作互不干扰,设计了多种操作模式。

2.2.2 vim 操作模式

  • 共有12种操作模式,常见的有三种:
  • 普通模式(Normal mode):
    执行对文本内容进行操作的指令。控制屏幕光标的移动,字符,字或行的删除,模式切换。
  • 插入模式(Insert mode):
    文本数据的写入。模式切换
  • 底行模式(last line mode):
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
  • 模式切换
  • 普通模式—>插入模式:i a o I A O
  • 普通模式—>底行模式:英文冒号
  • 其他模式—>普通模式:esc

2.2 vim基本操作

2.2.1 底行模式下常见操作

保存或者退出编辑

  • :w 保存
  • :q 退出
  • :wq 保存并退出
  • :q! 强制退出不保存
  • /string 匹配字符串
  • ?string 匹配字符串

2.2.2 普通模式下常见操作

  1. 模式切换
  • [ i ]:进入插入模式后,从光标当前位置开始输入文字
  • [ a ]:进入插入模式后,从目前光标所在位置的下一个位置开始输入文字
  • [ o ]:进入插入模式后,从目前光标位置的下一行,从行首开始输入文字
  • [ ESC ]:从插入模式切换为普通模式
  1. 移动光标
  • [ h ] [ j ] [ k ] [ l ] :上下左右
  • [ Ctrl ] + [ f ]:屏幕往上移动一页
  • [ Ctrl ] + [ f ]:屏幕往下移动一页
  • [ gg ]:光标移动到文本的开始
  • [ G ]:光标移动到文本的最后
  1. 删除
  • [ dd ]:删除光标所在行
  • [ ndd ]:从光标所在行开始删除 n 行
  • [ x ]:每按一次,删除光标所在位置的一个字符
  • [ dw ]:删除光标所在单词
  1. 复制粘贴
  • [ yy ]:复制光标所在行到缓存区
  • [ nyy ]:复制从光标位置开始的 n 行文字
  • [ p ]:将缓存区内的字符粘贴到光标所在位置以下。注意:所有与“ y "有关的复制命令都必须和“ p ”命令配合才能完成复制粘贴。
  1. 撤销和撤销还原
  • [ u ]:撤销上一次操作
  • [ Ctrl ] + [ r ]:撤销的还原
  1. 全文对齐
  • [ gg = G ]
  1. 替换
    1-12行的指定字符串替换
    :1,12s/printf/scanf/g
  2. 定位到某一行
  • [数字+shift+g]:比如定位153行,先打数字153,然后点shift +g
  1. 复制A文件内容粘贴到B文件
    (1)打开A文件 输入["+变量名+行数+yy] (其中变量名是自己起的,可以是a~z任意字母,也可以是1 ~ 9任意数字,但是注意一定是单字符,行数就是我们想要粘贴的内容函数,yy就是粘贴)

    (2)打开B文件 输入 [“ +变量名+p]

    文件A中的后3行就粘贴到B 文件中了!

2.3 注意

  • 刚使用特别容易遇到的错误。在vim中编辑的时候不小心没保存就退出 了(比如我就是不小心按了Ctrl+z),然后你在之后每次再打开这个文件的时候会一直提示如下错误信息:
  • 解决办法:
    (1)记下你的 .swp 文件的存储位置
    (2)输入 r —>在正常保存后退出 :wq
    (3)去你记住的 .swp 文件位置删除这个文件。问题就解决了

3. gcc/g++编译器

3.1 功能

将我们所写的高级语言代码编译解释成机器指令

3.2 编译过程

  • 预处理:展开所有代码(引入头文件,宏替换,删除注释…)
  • 编译:语法语义检测,没有错误则将代码解释成为汇编指令
  • 汇编:架构汇编指令解释成二进制机器指令
  • 链接:将所需的二进制机器指令(其他的.o以及库文件)打包生成可执行文件

3.3 gcc 常见选项:

  • -E 只进行到预处理完成
  • -S 只进行到编译完成
  • -c 只进行到汇编完成
  • -o 指定要生成的目标文件对象名称
  • -g 告诉编译器不要生成release版本在 -c 时就要加上-g

3.4 选项举例

  • gcc -E main.c -o main.i
  • gcc -S main.i -o main.s
  • gcc -c main.s -o main.o
  • (gcc -g -c main.s -o main.o)
  • gcc main.o -o main
  • 此时 main 就是一个可执行文件了,可以输入 ./main 指令执行main文件。(其实就是告诉shell文件 main 文件在哪里 ,所以这里意思是main在当前目录下)。

3.5 其他概念

  • 链接:将所有的机器指令(多个.o文件以及使用的库代码)打包生成可执行程序
  • .o:我们自己的 .c 文件生成的机器指令文件
  • 库文件:大佬们针对典型的常用函数,提前写好的打包好的机器指令文件
  • 链接库文件:就是将库中使用到的函数的实现拿过来用。分为动态链接(在我们可执行程序中记录库中函数符号信息表,并没有把具体实现的指令写入可执行程序,而是在运行的时候去加载这个库。优缺点:生成的程序小,在内存中共享库,但是运行时依赖库的存在)和静态链接(将库中使用到的代码写入到可执行程序中。优缺点:生成的程序较大,运行时不需要依赖库,但是会存在运行时内存中存在重复冗余代码)
  • gcc默认链接方式:动态链接。

4 gdb:调试器

4.1 什么是调试器

  • 用来调试程序的运行过程。编译器只能发现语法错误,无法发现程序的运行错误(奔溃、逻辑异常)。
  • 程序调试的前提:这个程序是一个debug版本的程序
  • debug程序:不进行代码优化,并且会加入调试信息
  • release程序:会进行代码优化,提高程序运行效率,无法调试
  • gcc编译器默认生成release版本程序——无法进行调试
  • gcc -g 选项,生成debug调试程序: gcc -g main.c -o main

4.2 常见调试指令

4.2.1 开始调试

  • run:直接运行

  • start:逐步调试

4.2.2 流程控制

  • list
    查看文件附近代码,可以查看指定文件指定行代码的附近代码,例如:list child.c:5

  • n/next
    下一步——逐过程(遇到函数直接运行完毕)

  • s/step
    下一行——逐语句(遇到函数,进入函数,继续逐语句进行调试)

  • until
    运行指定文件指定行,例如 until main.c:18

  • 断点相关

  • 打断点 :b/break
    例如给指定文件指定行打断点: b/break main.c:8。

    给指定函数打断点,例如:b/break test_func。

  • 查看断点信息:info break / i b

  • 删除断点:d/delete break_id

  • watch:给变量打一个监控断点,变量发生变化的时候触发断点

  • 打印

  • print:查看/设置变量数据

  • p/print 变量:打印变量的值

  • c/continue:从调试位置开始不再逐步调试而是向下运行

  • backtrace:查看函数调用栈,快速找到程序奔溃位置。栈顶函数就是导致程序奔溃的函数

  • 程序是运行参数是在gdb加载成之后,run/start 的时候给与
    gdb ./main
    run -l -a…

5. make/makefile:项目自动化构建工具

  • Makefile是一个文本文件,在其中编写项目的构建规则。
  • make是一个Makefile的解释程序,在当前目录下找到名为Makefile的文件进行逐行解释。

5.1 makefile是什么

  • 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile文件定义了其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

  • makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

5.2 make是什么

  • make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
  • make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

5.3 makefile 编写规则

  • 例子


  • 目标对象:依赖对象

  • [ tab ]为了生成目标对象所需要执行的命令

  • 预定义变量:
    $@:目标对象
    $^:所有依赖对象
    $<:依赖对象的第一个

5.4 make解释执行规则:

  • make生成第一个目标对象后就会退出。
  • 为了生成目标对象,递归先查找依赖对象的生成规则,生成依赖对象之后在生成目标对象
  • .PHONY:总是要生成的对象(与外部文件脱离的文件)

5.5 makefile文件


6. git :项目的版本管理工具

6.1 功能

  • 将项目的每个节点版本保存起来,以便于随时能够回滚还原。
  • 协同开发

6.2 操作

  1. 克隆远程仓库:git clone https://gitte.com/qigezi/class_94.git
  2. 添加修改记录:git add --all ./
  3. 提交本地仓库:git commi -m “备注信息”(时间 XXX 对XXX 文件 做了 XXX 修改)
  4. 同步远程仓库:git push origin master

6.3 举例

  1. 在gitee 创建一个仓库
    复制的仓库的路径 https 的
  2. 克隆远程仓库
    在linux下输入下面指令(把在仓库复制的指令粘贴进来) :
    git clone https://gitee.com/yxydcode/linux_git_use.git
  3. 添加修改记录:git add --all ./
    输入指令:git add --all ./

  4. 提交本地仓库:git commi -m “备注信息”
    输入指令:git commit -m “2021.10.17 yxy 添加了 main.c 文件”
  5. 同步远程仓库:git push origin master

6.4 配置默认用户名和密码,不用每次上传代码都要输入用户名密码

  1. 在我们有仓库的目录下输入 ls -a 命令
  2. 输入 :cd .git/ 命令 ,进入我们的.git目录下
  3. 输入 :ls 命令,看到config文件,输入 :vi config 命令打开config文件
    如下图所示

    我们对url进行修改
    在https://和gitee.com之间添加自己的gitee用户名和密码,下次即可不用输入用户名和密码进行提交代码。格式是 用户名:密码@(并以@符号作为结尾)
  4. 修改完成后,再次输入git push origin master命令时候,不在需要我们输入用户名和密码。

Linux——(二)环境基础开发工具(yum,vim,gcc,gdb,makefile,git)相关推荐

  1. linux篇【3】:Linux 环境基础开发工具yum,vim,gcc,makefile,git

    目录 一.Linux 软件包管理器 yum 1.什么是软件包 2.centos 7中安装形式 3.yum安装好处: 4.yum工具的常用选项 (1)yum list | grep sl 软件包信息介绍 ...

  2. 【Linux】基础开发工具的简单使用——yum/vim/gcc/gdb/make/git

    文章目录 yum -- 软件包管理器 yum list -- 查看软件包 yum install -- 安装软件 yum remove -- 卸载软件 vim -- 文本编辑器 正常模式 底行模式 v ...

  3. Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)

    目录 一.yum--安装软件 二.Vim--文本编辑器 (1).命令模式 (2).底行模式 (3).插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g++--编译器 (1). ...

  4. 【Linux】环境基础开发工具使用(万字汇总)

  5. 【Linux】Linux环境基础开发工具使用 —— yum | vim | gcc g++ | gdb | make makefile | 进度条 | git

    Linux环境基础开发工具使用 1. Linux软件包管理器yum 1.1 什么是软件包 1.2 软件安装三板斧 1.2.1 查看软件包 1.2.2 安装软件 1.2.3 卸载软件 2. vim 2. ...

  6. 【Linux】基础:Linux环境基础开发工具——make与Makefile

    [Linux]题解:Linux环境基础开发工具--make与Makefile 摘要:Makefile是一个文件定义了一系列的规则来指定编译过程以及更复杂的功能操作,make是一个命令工具,是一个解ma ...

  7. 2 Linux环境基础开发工具

    2 Linux环境基础开发工具 2.1 Linux软件包管理器yum 2.1.1 软件安装的方式 1. 源码安装 大多数开源的软件都是源码的形式.拿过来自己编译,安装. 优点:源码安装兼容性好. 缺点 ...

  8. Linux环境基础开发工具使用

    Linux开发工具 1.vim的基本概念 vim的常用模式 正常/普通/命令模式(command mode) 控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或者 ...

  9. Linux环境基础开发工具使用(上)

    Linux 软件包管理器 yum 在linux中如何安装卸载软件呢? Linux下安装软件有3种方式: 1.源码安装(不方便) 2.rpm安装--rpm -vih(不方便) 3.可能存在大量软件之间的 ...

最新文章

  1. Python用selenium获取Cookie并用于登录。
  2. Ubuntu录制GIF动画
  3. js -- 时间转年月日
  4. 江苏计算机信息录入技师选拔考试题,2010年江苏省机关事业单位工人技师资格选拔考试试卷...
  5. java servlet spring_spring与tomcat 对应关系,servlet各版本写法
  6. 查询分析300万笔记录_给你100万条数据的一张表,你将如何查询优化?
  7. 业界分享 | Embedding技术在商业搜索与推荐场景的实践
  8. 搭建oracle运行环境,搭建 Oracle Warehouse Builder 11
  9. Vijos——T 1092 全排列
  10. 图书管理系统~~学生管理测试用例
  11. 机器学习算法应用场景实例六十则
  12. 中国社会为何多犬儒?
  13. 如何用无监督模型,防范信用卡欺诈?
  14. 手机抓包获取数据,ROOT权限获取,xian鱼,taobao
  15. 关于嵌入式编程的思考
  16. Frontiers | 北林邬荣领/何晓青-网络作图揭示拟南芥与叶际微生物组互作机制
  17. 华为、思科、爱立信、诺基亚、中兴等全球11大通讯设施企业2020年第三季度业绩...
  18. Python -- Matplotlib:设置画布大小和子图个数
  19. 利用Flash制作一个可以自由拨动的时钟模具
  20. 凯迪拉克5月软文-V设计

热门文章

  1. 分时显示不同图片和问候语
  2. 数学建模整理-线性规划、整数规划、非线性规划
  3. 适合女生玩的可爱网站
  4. 《淘宝店铺营销推广一册通》一导读
  5. 目前为止,你从你的老板或者上级那学到的最受用的一句话是什么?他(她)让你最佩服的品质又是什么?
  6. 【详解】MySQL中使用正则表达式
  7. Mac上的PPT忘记保存了怎么办?
  8. 计算机中常用的矢量图形文件,第3章 电脑图像基础知识.ppt
  9. 悼念一代巨匠:苹果之父乔布斯的语录
  10. HTTPS加密通信过程原理