【Linux】环境基础开发工具使用

news2025/7/22 21:10:56

Vim

Vim 是一个编辑器

只能编辑,只能写代码

直接输入vim
在这里插入图片描述

: q就是退出

在这里插入图片描述

touch新文件,vim 进入

vim是一款多模式的编辑器

命令模式(默认打开的模式)

i 进入编辑模式/插入模式
在这里插入图片描述

esc回到命令模式

冒号进入底行模式

保存并退出 加感叹号是强制。

在这里插入图片描述

退出底行 esc

插入模式不能直接进入底行模式,要从命令进

底行也不要直接进插入

常见命令

复制光标行 yy 加数字 从当前行 往下复制多少行 nyy

粘贴 p 加数字就是粘贴多少行 np

u—撤销历史操作

ctrl+r 撤销刚才的撤销

光标定位:

到结尾:shift+g

最开始: gg

定位到某一行:数字加shift+g

到行尾:shift+4

到行首:shift+6

行内快速移动:w和b是依据单词左右移动的

hjkl: h 左 j 下 k上 l右 记忆方法:h(最左边) j(jump向下跳) k(king高高在上) l(最右边)

删除(剪切)整行:dd ndd就是删除n行

剪切 dd p

只要大写或小写

shift+~ 小写转大写 或 小写转大写

shift +r 替换 覆盖式替换老内容

r 就是只替换一个字符 加数字就是换多少个字符。

想要删一个字符 :x 数字+x就是删多少个字符 默认从左向右删除

shift+x :从右往左删除 也支持nx

练习方法:天天用

底行模式

调出行号:: set nu
vs 对比模式 分屏操作 光标在哪 ,底行在哪

光标从左侧跳转到右侧 :ctrl+ww快速按
在这里插入图片描述
在这里插入图片描述

vs 文件名 可以分屏操作

w:表示写入 w!

q:退出 q!

回去看运行结果: !cmd: 不退出vim执行对应的命令
在这里插入图片描述

!ls 就是看目录

vim配置

https://github.com/wsdjeg/vim-galore-zh_cn

.vimrc 当启动vim时,自动启动

vim. vimrc即可

一键配置vim VimforCpp gitee

在这里插入图片描述

找到vimrc 设置缩进 查找tabstop softtabstop shiftwidth 修改即可

如果配置出错,进入root

vim /etc/sudoers

把行号加上,加入信任列表

Linux编译器——gcc/g++

gcc -v gcc只能编译C

g++ -v g++可编译C也可编译C++

在这里插入图片描述

sudo yum install -y gcc-c++

安装g++

程序编译的过程:

文本的C - 计算机二进制

磁化 用南北极表示所以是二进制,硬件只认识二进制。

1.程序的预处理阶段(去注释、宏替换、头文件展开、条件编译……)

2.编译 (C—> 汇编)

3.汇编 (汇编→可重定向二进制目标文件)

4.链接 (链接 → 多个.o文件合并成一个可执行).exe

自己做实验

条件编译

在这里插入图片描述

gcc

在这里插入图片描述

编译mytest.c 生成可执行程序

在这里插入图片描述

把预处理完成的内容写到临时文件mytest.i

-O:形成另一个名字的新文件

-E:从现在开始进行程序的翻译,如果预处理完成,就停下来。

#parama once 防止头文件被重复拷贝到源文件
在这里插入图片描述

预处理之后依旧是C语言

编译:
在这里插入图片描述

-S:从现在开始进行程序的翻译,如果编译完成,就停下来。(转成汇编语言)

-c:从现在开始进行程序的翻译,如果汇编完成,就停下来。

.o文件是可重定向目标文件 变成了二进制 只是你自己的代码变成了二进制,并未和库关联起来

在这里插入图片描述

链接:

和库关联起来

在这里插入图片描述

背记:ESc

动静态库——感性的理解

在这里插入图片描述

dynamically linked动态链接

一般链接的过程,是有两种方式:

a.动态链接-需要动态库

b.静态链接-需要静态库

ls /lib64/ 这是库文件

ls /usr/include/stdio.h 提供C语言的方法列表,方法的声明

ls /lib64/libc-2.17.so -l 提供C语言的方法实现

包含头文件,链接方法 实现exe

Linux: .so 动态库, .a静态库

Windows: .dll动态库,.lib静态库

C程序是脱离不了C库文件的。

动态链接

网吧

告诉你库在哪里,需要用的时候就跳转至动态库。

需要我自己调用时,就跳转至库中去执行,编译时只要把当中使用库函数的地址填到代码中,就叫动态链接。

gcc和g++默认动态链接

静态链接

自己买电脑

把方法的实现给自己的代码中拷了一份

将库中方法的实现,真的拷贝到我们的可执行程序中。

gcc test.c -o mytest-s -static 就变成了静态链接

动态链接必须使用.so动态库文件

静态链接必须使用.a静态库文件

sudo yum install -y glibc-static

sudo yum install -y libstdc+±static

make/makefile

make是一个命令

makefile是一个文件

他们为了帮我们自动化地构建项目

在这里插入图片描述

编写makefile

a.依赖关系

b.依赖方法

在这里插入图片描述

依赖关系,左侧目标文件,右侧依赖文件列表

第二行table紧挨,依赖方法

在这里插入图片描述

make执行

在这里插入图片描述

清除

在这里插入图片描述

make后面跟依赖关系名字,就可以运行哪个方法

make是从上到下扫描的

.PHONY

伪目标总是被执行

就是make clean不会因为Update last 而不允许 总是被运行.

习惯:clean设置.PHONY

makefile根据文件的最近修改时间来的。

ACM

stat文件名

在这里插入图片描述

Modify:内容改变

Change:属性的变化
在这里插入图片描述
在这里插入图片描述

两个文件同时编译
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

进度条小程序:

缓冲区的概念

先保证makefile能把hello world跑出来 再写程序。
在这里插入图片描述

自动补全是通过头文件自动推断的

sleep先出来,是因为Printf早就执行完了,只不过信息没有被立马显示出来。

C语言是会给我们提供输出缓冲区的,根据特定的刷新策略,来进行刷新。

输出缓冲区就是C语言给我们提供的一段内存空间

显示器设备,一般的刷新策略是行刷新

碰到\n就把\n之前的所有字符全部给我显示出来。

如果我要立马刷新,fflush

在这里插入图片描述

回车换行:

换行是到下一行的旧位置‘\n’

回车回到行首’\r’

在这里插入图片描述

换成\r就出不来,因为在缓冲区出不来 要用fflush

在这里插入图片描述

在这里插入图片描述

预留100个字符

在这里插入图片描述

负号左对齐

在这里插入图片描述

完整版

yum

windows

1.要下载安装的软件是在你的电脑上吗?———不是

2.你怎么知道在哪里?——搜索

3.谁放的?它内部的工作人员

Linux

Linux社区或者对应开发人员放的。

基本过程

在这里插入图片描述

yum就相当于手机上的应用商店

在这里插入图片描述

作用:

1.搜索 下载 安装

2.解决依赖关系

yum的操作

在这里插入图片描述
在这里插入图片描述

yum源:

就是一个配置文件

在这里插入图片描述

安装扩展源

sudo yum install -y epel-release

yum源 -Centos- Base.repo就是配置文件

更新yum源:

网上搜,centos 7 更新国内yum源

做备份就是把它重命名一下

yum三板斧:

yum list #yum | greap + 软件名称 搜索软件

el7就是 centos7简写

yum install

yum remove 你的软件 #移除

git

版本控制器

精华在多人协作

1.什么是版本控制?

实验报告举例,备份每个版本

在这里插入图片描述

写个代码实现上面的过程

退回某个版本叫做回滚

从V2改一个版本叫做拉了一个分支

2.git的历史

林纳斯·托瓦兹 手写了一个版本控制器git

开源精神

3.git三板斧

1.git clone+ 仓库链接

2.git add 你的文件 #添加我们的代码到本地仓库

3.git commit -m “这里必须写提交日志”

4.git push #提交代码到远端仓库中

在这里插入图片描述

其他情况:

  1. 配置用户名和邮箱
  2. git log就是看提交日志
  3. 有时候会有提交冲突 git pull远端与本地再同步
  4. .gitignore #不想提交某个后缀名的文件

在这里插入图片描述
5. git rm 文件名 #删除文件

gdb

调试器

退出gdb quit

no debugging symbols found : gcc 和 g++ 默认形成的可执行程序是动态链接版本的release的 所以无法直接被调试

gcc -g 就是以debug版本发布

rodata只读数据

gdb操作

20221117目录下是gdb文件

在这里插入图片描述

gdb+可执行程序

quit可退出gdb

显示代码 list 简写成l

在这里插入图片描述
在这里插入图片描述

l 0 回车 查看所有代码

gdb会记录最近一条命令,回车就是执行最近一条指令

run命令开始跑程序,开始调试,如果没有设置断点,就直接结束。(vs里的F5)

在这里插入图片描述

给特定行打断点: break point + 行号

缩写:b+行号

在这里插入图片描述

info b: 查看断点(编号)

在这里插入图片描述

d +断点编号 删断点

在这里插入图片描述

逐语句调试:next 简写n

p 变量名 :打印变量内容

step +回车 简写s 进入函数调试(VS里的F11)

在这里插入图片描述

bt调用堆栈 第一个是所处函数

在这里插入图片描述

将当前函数跑完 finish

在这里插入图片描述

display叫做常显示

在这里插入图片描述

undisplay 编号:取消显示

until 行号:跳转到指定行

continue:跳断点 简写c

disable 断点编号: 禁用断点

在这里插入图片描述

打开断点 enable

set var i = …. 让循环变量到什么值

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

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

相关文章

【前沿技术RPA】 一文了解UiPath的代码审查工具Workflow Analyzer

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。 🐬个人主页:会敲键盘的肘子 🐰系列专栏:UiPath 🦀专栏简介:UiPath在传统的RPA(Robotic…

[附源码]java毕业设计企业员工管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Azdio-PEG-Maleimide,N3-PEG-MAL,叠氮-PEG-马来酰亚胺化学试剂供应

1、名称 英文:Azdio-PEG-Maleimide,N3-PEG-MAL 中文:叠氮-聚乙二醇-马来酰亚胺 2、CAS编号:N/A 3、所属分类:Azide PEG Maleimide PEG 4、分子量:可定制,N3-PEG 20k -MAL、N3-PEG 10k -MAL…

EFK部署centos7.9(四)Filebeat 部署

下载安装包 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.4-linux-x86_64.tar.gz tar xzvf filebeat-6.5.4-linux-x86_64.tar.gz -C /usr/local/ 解压安装包 cd /usr/local/ mv filebeat-6.5.4-linux-x86_64 filebeat cd filebeat/ mv filebe…

Springboot导出Excel,支持大数据量

1、添加maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version> </dependency> 2、ExcelUtil工具类 import org.apache.poi.ss.usermodel.Cell; import org.…

【附源码】Python计算机毕业设计天气预报APP

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

甘露糖-聚乙二醇-炔基|mannose-PEG-Alkyne|炔基-PEG-甘露糖

甘露糖-聚乙二醇-炔基|mannose-PEG-Alkyne|炔基-PEG-甘露糖 中文名称&#xff1a;甘露糖-炔基 英文名称&#xff1a;mannose-Alkyne 别称&#xff1a;炔基修饰甘露糖&#xff0c;炔基-甘露糖 mannose-PEG-Alkyne 甘露糖-聚乙二醇-炔基 炔基-PEG-甘露糖 纯度&#xff1a;…

统一网关Gateway、路由断言工厂、路由过滤器及跨域问题处理

目录 一、搭建网关服务 二、路由断言工程Route Predicate Factory 三、路由过滤器 四、全局过滤器GlobalFilter 过滤器执行顺序 五、跨域问题处理 一、搭建网关服务 网关的作用&#xff1a; 对用户请求做身份认证&#xff0c;权限校验 将用户请求路由到微服务&#xff0…

吴恩达机器学习课程笔记二

文章目录神经网络基础知识神经网络前向传播伪代码前向传播中单个神经元的作用矩阵加速运算训练模型的细节常用激活函数ReLUSigmoidLinear activation functiontanh选择激活函数选择输出层的激活函数选择隐藏层的激活函数为什么需要非线性激活函数Softmax激活函数多标签分类问题…

Metabase学习教程:提问-2

查询编辑器中的自定义表达式 何时应该使用自定义表达式&#xff0c;以及为什么要在Metabase的查询编辑器中利用它们。 在数学中&#xff0c;表达式是符号的集合&#xff0c;它们一起表示一个值。如果你以前使用过电子表格软件&#xff0c;表达式就是公式&#xff0c;比如SUM&…

从安装python到使用opencv进行人脸检测

一、python与PyCharm的安装 1.python主要有三种安装方式 参考自&#xff1a;2、Python安装 - 哔哩哔哩 Python安装教程&#xff08;2022最新&#xff09;_北京精神病康复中心的博客-CSDN博客 python下载官网&#xff1a;Python Releases for Windows | Python.org 1&#…

EDI系统如何恢复历史映射关系?

在知行之桥EDI系统中&#xff0c;由XML Map端口来处理不同 XML 之间的映射关系&#xff0c;主要的功能为&#xff1a;通过鼠标拖拽建立关系映射&#xff0c;将输入的源XML文件转换为目标XML文件。 XML Map端口的基本设置为&#xff1a; 源文件&#xff1a;配置源XML文件的模板…

【Java篇】备战面试——你真的了解“数组”的吗?

目录 数组概念 声明数组 数组默认值 数组拷贝及数组类型VS基本类型 Arrays类 二维数组 数组概念 在JAVA语言中数组是一种数据结构&#xff0c;是用来存储同一类型数据的集合或者序列&#xff0c;我们可以通过整型下标&#xff08;index&#xff0c;异或索引&#xf…

Centos7 docker搭建onlyoffice

注意&#xff1a;本文的命令使用的是 root 用户登录执行&#xff0c;不是 root 的话所有命令前面要加 sudo 一、安装docker 1、更新 yum 包&#xff08;使用 root 权限&#xff0c;生产环境中此步操作需慎重&#xff09; yum -y update yum -y update 升级所有包同时也升级软…

Set接口和常用方法

Set接口基本介绍 无序&#xff08;添加和取出顺序不一样&#xff09;&#xff0c;没有索引不允许重复元素&#xff0c;所以最多包含一个nullSet接口的常用方法和List一样&#xff0c;Set接口也是Collection的子接口&#xff0c;因此&#xff0c;常用方法和Collection接口一样 …

【C++】类与对象基本知识 (构造 析构 拷贝 explicit 对象数组 动态静态对象)

目录 1.类与对象基本概念 2.构造函数 3.析构函数 4.构造和析构函数调用顺序 5.拷贝构造函数 6.浅拷贝和深拷贝 7.初始化列表 8.explicit防止构造函数隐式转换 9.对象数组 10.动态对象 10.1 动态对象创建 10.2 动态对象数组 11.静态成员 11.1 静态成员变量 11.2 …

Java学习笔记(三)

Java学习笔记(三) 文章目录Java学习笔记(三)1 常用API1.1 类 Math1.1.1 abs1.1.2 ceil和floor1.2 System1.2.1 exit()1.2.2 currentTimeMillis()1.2.3 arraycopy()1.3 Runtime1.4 Object1.4.1 System.out.println底层原理1.4.2 equalsString类重写的equals方法1.5 对象克隆1.5.…

代码随想录训练营第24天|回溯算法理论基础、LeetCode 77.组合

参考 代码随想录 回溯算法理论基础 什么是回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程&#xff0c;主要是在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff0c;就“回溯”返回&#xff0c;尝试别的路径。回溯法是一种选优搜索法&#xf…

基于Matlab仿真极化双基地雷达系统以估计目标的范围和速度(附源码)

目录 一、系统设置 二、系统仿真 三、使用圆极化接收阵列 四、总结 五、程序 此示例演示如何仿真极化双基地雷达系统以估计目标的范围和速度。发射器、接收器和目标运动学被考虑在内。 一、系统设置 该系统以 300 MHz 的频率运行&#xff0c;使用线性 FM 波形&#xff0…

1526_AURIX TC275 BootROM下

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这个是固件启动的流程介绍&#xff0c;在启动的过程中&#xff0c;HSM的RAM必然会被初始化掉。这个之前倒是没有注意到&#xff0c;HSM还是有专门的RAM的。自然&#xff0c;我自己接触到的…