【1++的Linux】之基础开发工具

news2024/9/22 9:21:34

👍作者主页:进击的1++
🤩 专栏链接:【1++的Linux】

文章目录

  • 一,Linux软件包管理管理器
  • 二,Linux编辑器--vim
    • 2.1 什么是vim
    • 2.2 vim的基本操作
  • 三,gcc的使用
  • 四,gdb的使用
  • 五,项目自动化构建工具
  • 六,git三板斧

一,Linux软件包管理管理器

Linux软件包管理器相当于我们的应用商店一样,yum是Linux下一种常用的软件包管理器。
在介绍yum前我们再来认识一个工具rzsz,这个工具是用于windows与Linux机器间通过Xshell传输文件的,可通过拖拽的方式将文件上传至另一个机器。

需要注意的是在使用yum时必须保证你的机器网络通畅。
ping www.baidu.com 可以验证你的网络是否通畅。

当我们要查看软件包时可以通过yum list 罗列出当前所有的软件包。
例:
部分截图:
在这里插入图片描述

由于全部罗列出太多,为了方便我们寻找我们想要的通常会使用管道+grep命令来筛选出我们想要的。
例:
在这里插入图片描述
注意:

  1. 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  2. “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  3. “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  4. 最后一列,epel 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.

当我们想要安装软件时可通过命令sudo yum install 软件名称.
yum会自动找到需要下载的软件包,你只需输入y确定。安装完成后会有提示。
例:
由于我已经安装好了GCC,因此提示我已经安装过了。
在这里插入图片描述
注意:

  1. 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
  2. yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.

学会了安装软件,那么如何卸载软件呢?
使用这条命令:sudo yum remove 软件名称
例:
在这里插入图片描述

二,Linux编辑器–vim

2.1 什么是vim

vim是一个多模式编辑器,常用的有三种模式:命令模式,插入模式,底行模式。
命令模式:控制屏幕光标的移动,字符的删除等。
插入模式:在这个模式中,我们才可以进行文字输入。
底行模式:文件的保存和退出,找字符,列出行号等操作。

2.2 vim的基本操作

  1. 进入vim:输入vim 文件名 ,进入vim后,处于命令模式。
  2. 命令模式切换为插入模式:输入a或i或o。
  3. 插入模式切换为命令模式:按Esc。
  4. 命令模式切换为底行模式:shift+;。
  5. 在底行模式中:w是保存文件;wq是保存并退出:q!是强制退出。

命令模式中的一些命令:
6. 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
7. 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
8. 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
9. vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
10. 按[shift+g]也就是G:进入文本末端
11. 按「#l」:在该行光标移#个位置,如:5l,56l
12. 按「 $ 」:移动到光标所在行的“行尾”
13. 按「^」:移动到光标所在行的“行首”
14. [x」:每按一次,删除光标所在位置的一个字符
15. 「dd」:删除光标所在行
16. 「#dd」:从光标所在行开始删除#行
17. 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
18.「#yw」:复制#个字到缓冲区
19.「yy」:复制光标所在行到缓冲区。
18. 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
19. 「r」:替换光标所在处的字符。
20. 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次。
21. 「ctrl」+「g」列出光标所在行的行号。

底行模式中的一些命令:
在使用末行模式之前,请记住先按「ESC」键确定您已经处于命令模式,再按「:」冒号即可进入底行模式
22. 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
23. 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

三,gcc的使用

在讲gcc前我们先来讲讲一段代码是如何运行的。

  1. 预处理阶段:在这个阶段主要进行的是宏替换,条件编译,去注释,文件包含等操作。
  2. 编译:编译的主要目的是生成汇编,在这个阶段还会检查语法的正确性。
  3. 汇编:在这个阶段会将汇编语言转换为二进制机器可识别代码。
  4. 链接:链接阶段会进行函数库的链接以及同一项目中的各文件间的链接。接下来我们再讲讲什么是函数库。
  5. 函数库:函数库分为静态库和动态库两种。

静态库:在编译链接时,库的文件代码全部 加载到可执行文件中,所以在运行时就不需要库文件了。
动态库:在编译链接时,没有把库代码加载到可执行文件中,而是在程序运行时链接文件加载库,且gcc默认使用的是动态链接。

gcc选项

-E 预处理 生成.i文件
-S 编译 生成.s文件
-c 汇编 生成.o文件
-o 链接 最终形成可执行文件
-static 静态链接
-g 生成调试信息,gcc默认生成的是release版本,因此要加-g才能生成debug版本。

例:
在这里插入图片描述

四,gdb的使用

要使用gdb进行调试,必须在源代码生成二进制可执行程序的时候加上-g选项。
gdb 常用命令:

  1. list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
  2. list/l 函数名:列出某个函数的源代码。
  3. r或run:运行程序。
  4. n 或 next:单条执行。
  5. s或step:进入函数调用
  6. break(b) 行号:在某一行设置断点
  7. break 函数名:在某个函数开头设置断点
  8. info break :查看断点信息。
  9. finish:执行到当前函数返回,然后挺下来等待命令
  10. print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
  11. display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  12. delete breakpoints:删除所有断点
  13. delete breakpoints n:删除序号为n的断点

五,项目自动化构建工具

makefile带来的好处就是自动化编译,能够极大的提高软件开发效率。
make是一个命令工具,能够解释makefile中的指令。
要理解makefile我们先来理解依赖关系与依赖方法
看一个例子:
在这里插入图片描述

在这个makefile中test2.exe与test2.c之间具有依赖关系。并且test2.exe依赖test2.c。也就是说,有test2.exe的前提是必须有test2.c。gcc test2.c -o test2.exe 称做依赖方法,也就是说,test2.c 通过上述的方法才生成了test2.exe。

项目清理
当我们输入clean后,系统就会去makefile中查找clean目标,但是,若没有 .PHONY修饰,并且你的文件里有一个叫clean的,这时就会把你这个文件当做目标文件,因此在编译器眼里你就是最新的文件,不需要去执行依赖方法来生成了。有了。PHONY修饰后,就成了伪目标,伪目标的特点是总是要被执行,因此clean后的依赖方法就总是会执行。

六,git三板斧

git clone xxx 创建一个放代码的本地仓库

  1. git add 将代码上传到本地仓库中
  2. git commit 提交改动,日志到本地
  3. git push 同步到远端服务器上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

课时7:Trustzone基础知识

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:Secureboot从入门到精通-[目录] 👈👈👈目录 Trustzone安全扩展双系统架构Trustone架构多方位支持的安全

探索Gradio库中的Textbox模块及其强大功能

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

作用域、垃圾回收机制、闭包、构造函数

作用域 作用域规定了变量能够被访问的 ‘范围’,离开了这个范围变量便不能被访问 分为: 局部作用域 函数作用域块级作用域 let/const 全局作用域 作用域链 嵌套关系的作用域串联起来形成了作用域链 作用:作用域链本质上是底层的变量的查找机制 函…

简写MKL库windows安装以及python如何调用dll库

MKL安装: 最新MKL库下载地址 Donwload: Accelerate Fast Math with Intel oneAPI Math Kernel Library 64位以及32位我直接都安装了 之后配置各种包含目录以及环境变量:网上有很多配置vs的配置教程,这里就不贴了。 (ps: 2023 在vs2019上&a…

nodejs高级编程-核心模块

一、path 1 获取路径中的基础名称 const path require(path)// console.log(__filename) // /Users/liuchongyang/Desktop/分享/网页读取本地文件/node.js// 1 获取路径中的基础名称 /*** 01 返回的就是接收路径当中的最后一部分 * 02 第二个参数表示扩展名,如果…

手把手教-单片机stm32基于w25q128使用文件系统

一、开发测试环境 ①野火stm32f407开发板 ②rtthread操作系统 W25Q128的电路原理图: 二、开发步骤 ①使能spi驱动。 ②使能spi bus/device 驱动,选择sfud驱动。 ③开启dfs功能,选择elm文件系统。 ④保存,重新生成工程。 ⑤下载到…

VueCli 脚手架使用

VueCli 脚手架 到目前为止,已经会了Vue基本使用(去创建vue实例,创建之后再去挂载,挂载之后就去使用各种功能,挂载之后就可以使用其各种功能,data methods compute 以及各个生命周期,常用的属性以…

779. 最长公共字符串后缀

题面: 给出若干个字符串,输出这些字符串的最长公共后缀。 输入格式 由若干组输入组成。 每组输入的第一行是一个整数 NN。 NN 为 00 时表示输入结束,否则后面会继续有 NN 行输入,每行是一个字符串(字符串内不含空白符&…

Redis深入 —— 持久化和事务

前言 最近的学习中,荔枝深入了解了Redis的持久化、Redis事务相关的知识点并整理相应的学习笔记,在这篇文章中荔枝也主要梳理了相应的笔记和基本知识,小伙伴们如果需要的话可以看看哈。 文章目录 前言 一、Redis持久化 1.1 RDB 1.1.1 Redi…

掌握驱动之道:L298N模块多方式驱动电机的优劣分析

L298N模块是一种常用的直流电机驱动模块,它可以通过控制输入端口来实现对电机的速度和方向的控制。L298N模块有3个输入端口:IN1、IN2和EN。 方法一:使用高级定时器输出通道和互补输出通道控制电机 将模块的IN1和IN2分别连接到STM32高级定时器…

Python GUI编程利器:Tkinker中的事件处理(11)

​ 小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日目标 学习下事件处理的相关知识点: 事件处理四要素 事件序列 事件绑定 今天要实现如下效果&#xff1…

Java在Excel中进行数据分析

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前一段时间淘宝出了一个“淘宝人生”的模块,可以看从注册淘宝账号至今的消…

k8s实战3-使用Helm在AKS上发布应用

AKS(Azure Kubenetes Service)是微软云azure上的K8s服务。 主要分为三步 1 连接到AKS 2 用kubectl发布应用 3 用Helm发布应用 1 登录 az login 2 连接dp-npr-dsm-aks(Dsm项目的AKS) az account set --subscription {{subID}} az aks get-credent…

指针的进阶(一)

目录 1. 字符指针 方法一 方法二 字符指针面试题 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 4. 数组传参和指针传参 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5. 函数指针 代码一 代…

Windows用户怎么取消访问共享文件夹的密码

许多Windows系统用户在访问共享文件夹的时候却提示需要输入密码才可访问。这一步给很多人造成了困扰,其实我们可以取消访问共享文件夹密码。请看下面的两个方法。 方法一: 搜索 网络和共享中心。点击 更改高级共享设置。在最底下密码保护的共享那项&…

用C#写汉诺塔问题

假设要将n个圆盘从A->C,中间可以借助B,那么递归思路是这样的,我们先将除最大的一个圆盘外的其它n-1个圆盘从A->B,借助C,然后将最大的一个圆盘搬到C,最后将刚才的n-1个盘子,从B->C借助A&#xff0c…

Qt完成闹钟提示

未启动: 启动: .cpp #include "widget.h" #include "ui_widget.h"void Widget::btn1_slots() {//点击启动开始定时event_timer this->startTimer(1000);btn1->setEnabled(false);btn2->setEnabled(true);edit2->setEnabled(false…

一个月学通Python(十三):高级Python必须掌握的进阶知识点

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3章,1个月就能全方位的完成Python的学习并进行实战开发。加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础》 文章目录 专栏介绍Python语言进阶1. 数据结构和算法2. 函数的使用方式3. 面向对象相关知识…

Todo-List案例版本五

安装库npm i pubsub-js 消息的订阅与发布 src/App.vue <template><div class"app"><h1>{{ msg }}</h1><School/><Student/></div> </template><script> import Student from ./components/Student import …

微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image

微信小程序常用组件的简单使用 1. view组件2. scroll-view 组件3. swiper 和 swiper-item 组件3.1. swiper组件中的常用属性 4. text 和 rich-text组件4.1. text组件4.2. rich-text 组件 5. button 组件6. image组件6.1. image的mode属性 1. view组件 view组件就类似于html中的…