当前位置: 首页 > article >正文

Linux——环境基础开发工具使用1

目录

1.软件包管理器

1.1 操作生态系统 

1.2 yum具体操作 

2.编辑器Vim

2.1 vim初识 

2.2 vim的基本概念 

 2.3 vim的基本操作

2.3.1 命令模式

2.3.2 插入模式 

2.3.3 底行模式

2.3.4 补充 

3.编译器gcc/g++

3.1 背景知识

3.1.1 预处理(进行宏替换/去注释/条件编译/头文件展开等)

3.1.2 编译(生成汇编)

3.1.3 汇编(生成机器可识别的代码) 

 3.1.4 链接(生成可执行文件或库文件)

3.1.5 补充


1.软件包管理器

Linux下安装软件的方案:

1. 源代码安装

2. rpm包安装

3. 包管理器安装 --- yum/ apt

(此图片来自于比特就业课课件) 

1.1 操作生态系统 

好的操作系统定义:

生态环境好

不同的操作系统根本是生态不同(面向的群体不同) 

(此图片来自于比特就业课课件) 

工程师免费在特定提供软件,是为了更好地维护生态系统。

 (此图片来自于比特就业课课件)

国内镜像源—— 

 Linux机器上,有对应的给yum/apt 提供的配置文件。(url或者ip地址)

具体过程如下:

 (图片来自于比特就业课课件)

云服务器:内置的配置文件已经是国内的 。

 (附:清华大学镜像站,其他高校也有,感兴趣可以在百度百科上搜索)

软件包依赖问题——

 (图片来自于比特就业课)

yum 可以解决依赖问题。

1.2 yum具体操作 

安装软件实质上是进行文件拷贝,此时,有权限的约束,需要在root下或者sudo yum/apt进行提权。

一般而言,软件只安装一次,所有人都可以用。

注意事项:
• 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
• yum/apt安装软件只能一个装完了再装另一个. 正在yum/apt安装一个软件的过程中, 如果再尝试用
yum/apt安装另外一个软件, yum/apt会报错.
• 如果 yum / apt报错, 请自行百度.

2.编辑器Vim

vim 是一个专注的编辑器,同时,也是多模式的编辑器。

2.1 vim初识 

根据上述的内容,我们可以知道vim指令是真实存在的。 

直接输入vim指令,我们可以进入到以下界面。

2.2 vim的基本概念 

vim有很多模式,一般支持的模式有:(本文仅仅包含常用的三种模式)

 2.3 vim的基本操作

在vim的操作中,光标的定位是非常重要的。 

2.3.1 命令模式

光标的定位:

gg : 定位到最前列

shift + g : 定位到最结尾

行数 + gg / (shift + g) : 定位到指定列

shift + $/4 : 光标定位到行尾

shift + 6/^ :光标定位到行首

h , j , k , l : 左 上 下 右

数字 + w/b : 以单词为单位,进行前后移动

其他命令:

n + yy : 复制n行

n + p : 粘贴n行

n + dd : 剪切或者删除

n + x/X : 命令删除

n + r : 小范围的替换

shift + r/R : 进入替换模式

shift + `/~ : 快速大小写切换

u : 撤销

ctl + r : 对u 进行撤销

2.3.2 插入模式 

从命令模式进入插入模式:a i o

2.3.3 底行模式

从命令模式进入底行模式: shift + :

命令:

w : 保存

q : 退出

wq : 保存并退出

shift + zz : 退出vim

w! : 强制保存

q! : 强制退出

wq! : 强制保存并退出

set  nu/nonu : 设置行号/取消行号

/XXX + n : 根据关键字进行查找

! + 命令:不退出直接执行命令(gcc/   ./a.out等)

ctrl + ww : 分屏时光标移动

vs + other(文件) : 分屏打开

2.3.4 补充 

补充的是更加实用的操作! 

 批量化注释——

ctrl + v -> hjkl(操作)-> shift + i ->输入//->esc 

批量化去注释——

ctrl + v -> hjkl -> d 

批量删除——

ctrl + v -> hjkl(选择区域)-> d 

也可以进行批量化添加。

上述补充是在命令模式下的补充,下面我们来进行底行模式的补充。

vim code.c + n -> 在打开时,光标直接进入到第十五行左右。

!+ 命令的开始符 -> 可以快速执行历史命令。 

配置的调试——

在网络上有很多关于配置的文章,我们可以根据自己的需要来进行,这里给了一个比较简单的——

在普通用户之下(注意),直接输入以下链接

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

然后根据命令来进行就可以了。最终的界面更符合大多数人写代码的需要。

3.编译器gcc/g++

3.1 背景知识

3.1.1 预处理(进行宏替换/去注释/条件编译/头文件展开等)

其中的-E表示:从现在开始,进行程序的翻译,一旦预处理做完,就停下来。

则由上述可得,code.i 就是 code.c 预处理之后的结果。 

3.1.2 编译(生成汇编)

其中指令中的-S就是开始程序编译,编译做完,形成汇编,就停下来。

3.1.3 汇编(生成机器可识别的代码) 

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

code.o是可重定位目标二进制文件,无法执行。 

由上述图片可以看出,没有执行的权限。 

 3.1.4 链接(生成可执行文件或库文件)

通过链接,可以形成可执行文件。 

 其他更加深奥的知识在后续会继续更新,敬请期待。

3.1.5 补充

汇编的原因:减少语言开发开发的成本; 

4.动静态库和动静态链接

gcc 默认形成的可执行程序是动态链接的;gcc-static进行的是静态链接。 

动态库是共享的,所以不能丢失,一旦丢失,所有依赖的程序就会运行错误;

静态链接:把我们要的库方法实现,直接拷贝到我们的可执行程序中。

 程序默认链接是动态链接,其体积比较小;

静态链接不依赖库,但是其体积比较大。浪费磁盘和内存空间。


http://www.kler.cn/a/398386.html

相关文章:

  • 【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV5人脸目标检测
  • 为正在运行的 Docker 容器重启策略,以提高服务的可用性
  • 数据集的重要性:如何构建AIGC训练集
  • UE5运行时创建slate窗口
  • 使用 Grafana api 查询 Datasource 数据
  • hive中map_concat函数介绍
  • React Native 全栈开发实战班 - 原生功能集成之地理位置服务
  • 常用的Anaconda Prompt命令行指令
  • 【第三课】Rust变量与数据类型(二)
  • java.sql.SQLException Parameter index out of range
  • Ubuntu下的Eigen库的安装及基本使用教程
  • 14.最长公共前缀
  • 基于Kafka2.1解读Consumer原理
  • memblock内存分配器
  • 智能算法助力衍生品市场投资分析:正大科技的量化模型应用
  • java组件安全
  • Scala入门基础(17.1)Set集习题
  • Kotlin深度面试题:协程、密封类和高阶函数
  • 计算机网络 (3)计算机网络的性能
  • React前端框架入门教程:从零开始构建一个简单的任务管理应用
  • 麒麟Server下安装东方通TongLINK/Q
  • 01.02、判定是否互为字符重排
  • 【c++篇】:二叉搜索树--有序存储与高效查找的关键
  • 谷歌新作:Unbounded开放世界RPG,AI定义无限游戏新纪元
  • git 常见冲突场景与解决方法
  • 5.11 ResNet