linux基础开发工具使用

文章目录

    • 一. yum命令
      • yum的使用
    • 二.vim命令(写代码)
      • 各模式的互相转化
        • 命令模式
          • 光标移动的命令
          • 复制,粘贴,剪切,撤销
          • 撤销
          • 字符的转换
          • 字符的添加和删除
          • 查找
          • 注释
          • 清除注释
        • 替换模式
        • 视图模式
      • 裸的vim也可支持多文本编译
      • vim 报错小技巧(光标改动到报错位置)
    • 三.gcc/g++编译器(编译代码)
      • 3.1介绍
        • 3.1.1gcc
          • 3.1.1.1gcc编译指定生成文件
        • 3.1.2g++
      • 3.2背景知识(编译器和编译语言的关系和编译语言的编译过程)
        • 3.2.1编译器和编译语言的关系
        • 3.2.2 编译语言生成程序的过程
      • 3.3 gcc的生成过程
        • 3.3.1预处理解释条件编译
        • 3.3.2链接
          • 3.3.2.1库:
          • 3.3.2.2库的分类:
            • 3.3.2.2.1 静态库
            • 3.3.2.2.2动态库
    • 四.代码自动生成程序(make和Makefile)
      • 4.1解释
        • make是一个插件
        • Makefile是一个解释器(即一个文件)
      • 4.2示例
      • 4.3make
      • 5.1缓冲区
      • 5.2回车
      • 5.3 换行
      • 回车 加换行

一. yum命令

yum可以比作linux的应用商店:

yum的使用

yum install 软件(下载软件)
yum remove 软件(删除软件)
强制下载和删除:
yum install -y 软件;
yum install -y 软件;

二.vim命令(写代码)

定义:一款文本编译器
vim是一款多模式的编译器

各模式的互相转化

linux基础开发工具使用_第1张图片

①底层模式
linux基础开发工具使用_第2张图片

②命令模式转编译模式
linux基础开发工具使用_第3张图片

命令模式
光标移动的命令

gg命令:将光标移动到开头位置;
shift+g:将光标快速定位到代码的最后一行;
n+shift+g:定位到第n行;(这里的n是一个数字)
shift+6:将光标定位到光标所在行的开头位置
shift+4:将光标定位到光标所在行的末尾位置;
由于shift+6就是^;shift+4就是$;
所以就有了锚点的定义:
linux基础开发工具使用_第4张图片

H:左移一个字符
J:下移一个字符
** k**:上移一个字符
** I**:右移一个字符
** W后移一个单词
** B
前移一个单词(当遇到不是单词的时候就按一个字符一个字符的走)

复制,粘贴,剪切,撤销

(n) yy :复制从当前行向下数n行的内容;
** (n) p**:粘贴当前行向下数n行;
** (n)dd剪切 ;
** u
撤销粘贴操作;

撤销

** u** 命令模式下撤销刚才的操作;
** ctrl+r**:撤销刚才的撤销操作(命令模式下的u)

字符的转换

** shift+`:按住这两按键不懂就会依次将原本大写的字符转小写**;将原本小写的字符转大写
** n+r+自己想加的字符**批量替换光标所在字符,或者多个字符
替换模式:shift+r;

字符的添加和删除

添加
插入模式进行添加;
删除
向后删除:命令模式:n+x:删除当前光标后n个字符;
向前删除:1.插入模式:直接使用使用Backspace键;
2.命令模式:n+shift+x:向前删除n个字符;

查找

shift+3查找同名的单词;按n会在这些同名单词中跳转;

注释

ctrl+v(转化为视图模式)->j/k两个按键上下选中区域—>shift+i-> //->Esc;
linux基础开发工具使用_第5张图片

清除注释

ctrl+v(转视图模式)->上下左右键转选中区域->d
在这里插入图片描述

替换模式

linux基础开发工具使用_第6张图片
替换模式会将输入的字符覆盖光标所在的字符;
这里撤销使用:命令模式下的u进行取消;

视图模式

linux基础开发工具使用_第7张图片

裸的vim也可支持多文本编译

linux基础开发工具使用_第8张图片
1使用vim打开以一个文件;

vim 报错小技巧(光标改动到报错位置)

linux基础开发工具使用_第9张图片

三.gcc/g++编译器(编译代码)

3.1介绍

c语言:gcc/g++两者都可;
c++语言:g++
原因:g++是c++的编译器;但是c++兼容c语言;

3.1.1gcc

./a.out如果编译报错
在这里插入图片描述
添加**-std=c99**

3.1.1.1gcc编译指定生成文件

gcc 文件名 -o 生成的文件名
linux基础开发工具使用_第10张图片

3.1.2g++

c++文件有三种写法
在这里插入图片描述
在lunix中多使用**.cc**的写法;

3.2背景知识(编译器和编译语言的关系和编译语言的编译过程)

3.2.1编译器和编译语言的关系

编译语言的历史:
linux基础开发工具使用_第11张图片
linux基础开发工具使用_第12张图片

3.2.2 编译语言生成程序的过程

linux基础开发工具使用_第13张图片

3.3 gcc的生成过程

linux基础开发工具使用_第14张图片

3.3.1预处理解释条件编译

linux基础开发工具使用_第15张图片
应用:
vs的社区版本;专业版本;
这里云服务器内只会维护一份这两者中的一份;

3.3.2链接

链接会将.o文件和库函数相结合;

3.3.2.1库:

linux基础开发工具使用_第16张图片

3.3.2.2库的分类:
3.3.2.2.1 静态库

静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”

3.3.2.2.2动态库

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,
而是在程序执行时运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态
库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc hello.o –o hello

总结: 开发环境进行开发的全过程:
1准备:
(1)下载头文件,和库文件
(2)设置好头文件查找库文件的路经
(3)规定好库文件和**.o文件**的 链接方式已备编译时的链接使用
2.编译
预处理
编译
汇编
链接

四.代码自动生成程序(make和Makefile)

4.1解释

make是一个插件

使用它会直接将Makefile中的指令直接生成

Makefile是一个解释器(即一个文件)

他承载所需要的生成的命令

4.2示例

使用方法
推荐
linux基础开发工具使用_第17张图片
不推荐
linux基础开发工具使用_第18张图片
这里要讲的是.o文件依赖。s文件就会向下先生成.s文件;make一次可以生成多个文件;

4.3make

make 插件:
1.make的默认规则
1.默认第一条命令可以直接使用make来使用;后面的的指令需要make加目标文件;
2.Makefile代码中:使用@可以使代码不会回显;
linux基础开发工具使用_第19张图片
在这里插入图片描述
这里使用echo就不会回显了;
3.Makefile中使用单#就可以将文件注释;
linux基础开发工具使用_第20张图片
4.makefile 支持使用变量来进行编码:
linux基础开发工具使用_第21张图片
5.makefile 支持依赖关系可以使用简称;
linux基础开发工具使用_第22张图片
这里的 代 指 c o o d e . c ; ^代指coode.c; coode.c@代指mybin

5.Makefile中命令不被phony修饰的文件只可以在修改完成后使用一次;而被phony修饰的命令可以被重复使用;
linux基础开发工具使用_第23张图片
这里的文件没有被修改所以不可以使用make
问题
make怎么知道文件没有被修改呢?
使用的是文件修改时间;
linux基础开发工具使用_第24张图片2.文件时间ACM:
access时间:能访问时间;
Modify时间:文件内容修改时间;
Change时间:属性的修改时间;
这里access时间:隔一段时间再进行一次更新;并不是每次都更新;
原因
linux基础开发工具使用_第25张图片
由1.2和2得我们可以得到:make判段是否更改的使用的时间 :Modify时间;

5.1缓冲区

linux基础开发工具使用_第26张图片
这里输出会等待两秒后输出;
**出现这种情况的原因:缓冲区(输入缓冲区,输出缓冲区)今天主要是输出缓冲区;
那么缓冲区在哪里呢?
linux基础开发工具使用_第27张图片
标准输出流;
** 一般输出回 将文件先放在输出中;等待一段时间;再输出;

但是\n可以强制输出;
fflush(stdout);强制输出;

5.2回车

是将光标回到本行首元素
使用\r
这里注意:输出没有使用换行;需要使用fflush(stdout)来强刷新缓冲区;

5.3 换行

将光标换到下一行;

回车 加换行

你可能感兴趣的:(linux,运维,服务器)