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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值