【Linux】环境基础开发工具使用
创始人
2024-01-31 07:42:36

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 = …. 让循环变量到什么值

相关内容

热门资讯

excel表格怎么求积 exc... Hello大家好,我是帮帮。今天跟大家分享一下Excel合并单元格求和乘积计算技巧,特殊表格公式计算...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
死人为什么要盖上脸 家里死人三... 众所周知,人的一生是非常短暂的,所以人们会在有限的时间里,将自己想做的事情都做完,为的就是不留遗憾。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...