Linux入门篇——环境开发基本使用工具

Linux入门篇——环境开发基本使用工具

1 Linux开发工具

1.1 vim编辑器的基本概念

vim其实是一款多模式编辑器,vim是vi的升级版本,不仅兼容vi的所有指令,而且还有新的特性在里面。例如:语法高亮,可视化操作不仅可以在终端,也可以在Windows或者mac os下。

使用方式

vim 文件名

如果发现vim不存在,使用以下命令进行安装:

yum install -y vim

如果不是root用户,需要在前面加上sudo

前面讲到,vim是一款多模式编辑器,但是最常用的有三种模式,分别是命令模式、插入模式和底行模式,每个模式的功能如下:

  • 正常/普通/命令模式:vim打开一个文件默认进入的就是命令模式。在这个模式下,可以用上下左右按键移动光标,可以使用相应的命令,比如删除字符或者删除整行。还可以使用复制、粘贴等功能。
  • 编辑/插入模式:在命令模式下,虽然可以执行相应的复制、删除等命令,但是无法进行内容的编辑。要需要按下[i、I、o、O、a、A、r、R]等字母,才会进入到编辑模式,也就是界面左下方显示[INSERT]或者[REPLACE]的时候,才可以进行编辑。按下[ESC]键退出编辑模式。
  • 末行模式:在命令模式下输入[: / ?]三个字符其中一个,光标会移动到最下面那一行。在这个模式中,可以进行数据的查找,替换,文件的保存或者程序的退出等等。

下面这张图更好的表示三者之间的关系:

在这里插入图片描述

1.2 vim的基本操作
  1. 进入文件
[chakming@localhost test_08_03]$ vim test.c
  1. 按下i进入编辑模式

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

  1. 按下ESC退出编辑模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Opgxzr0I-1659764783643)(C:\Users\17660\AppData\Roaming\Typora\typora-user-images\image-20220803221101309.png)]

  1. 使用:wq保存并退出vim环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9z8DFB6g-1659764783644)(C:\Users\17660\AppData\Roaming\Typora\typora-user-images\image-20220803221135748.png)]

1.3 vim命令模式下的命令

移动光标

h或者左箭头(←) : 向左移动一个字符
j或者下箭头(↓) : 向下移动一个字符
k或者上箭头(↑) :    向上移动一个字符
l或者右箭头(→) : 向右移动一个字符

n<space>    :  n代表数字的意思,也就是输入数字后按下空格,会像后移动n个字符
0或者[Home]  :数字0或者按键home能够移动到这一行最前面字符处
$或者[End]   : 移动到这一行最后的字符
G  : 移动到该文件最后一行
gg :  移动到文件的第一行
nG :移动到文件的第n行

删除、复制与黏贴

dd   : 剪切一整行
ndd  : 剪切光标所在的向下n行
d1G  : 剪切光标所在到第一行的所有数据
yy   : 复制光标所在的哪一行
nyy  : 复制光标所在的向下n行
p    : 将已复制或者剪切的内容在光标的下一行粘贴
P    : 将已复制或者剪切的内容在光标的上一行粘贴
u    : 恢复前一个操作
[ctrl]+r :重做上一个操作

进入编辑模式

i与I :进入编辑模式,i表示在目前光标处插入,I在目前所在行的第一个非空格符处插入
a与A :进入编辑模式,a表示在目前光标所在的下一个字符处插入,A表示在光标所在行的最后一个字符串插入
o与O :进入编辑模式,o表示在目前光标所在的下一行插入新的一行,O表示在光标所在处的上一行插入新的一行
r与R :进入替换模式,r替换光标所在的哪一个字符一次,R会一直替换,直到退出
1.5 vim末行模式下的命令

查找和替换

/word :向光标之下寻找一个名称为word的字符串
?word :向光标之上查找一个名为word的字符串
n :表示重复前一个查找操作。
N :反向查找下一个操作

保存、退出

:w  : 仅保存文件
:w! : 强制保存文件
:q  :退出vim编辑器
:q! : 强制退出
:wq :保存后退出,:wq!强制保存后退出
:! command 可以在不退出vim编辑器的情况下,执行终端的命令
1.6 vim的配置

参考:https://gitee.com/HGtz2222/VimForCpp?_from=gitee_search

2 Linux编辑器-gcc/g++使用

2.1 gcc的基本概念

gcc/g++是一款Linux针对于C和C++程序进行编译到执行的过程,gcc可以用在C程序,g++可以用在C和C++程序。

使用方式

gcc [选项] 要编译的文件 [选项] 目标文件

首先,在使用这个编辑器之前,先了解下C语言从编译到执行的过程:

参考文件:详解程序执行过程

  • 预处理:主要是将头文件的内容进行替换,和宏定义的替换,以及去注释等操作
  • 编译:将C代码转为汇编代码
  • 链接:生成可执行文件
2.2 gcc的选项
-E :进行预处理
-S :进行编译
-c :编译到目标代码
-o :输出到指定文件
-g :生成调试信息,配合GNU调试器使用
-shared : 尽量使用动态库,生成文件比较小
-On :n为0-2的数字,表示优化程序
-w  : 不生成任何警告信息
-Wall : 生成所有警告信息

3 Linux调试器-gdb使用

3.1 gdb的基本概念

gdb是linux用来对C和C++程序进行调试的工具,程序默认是release模式,加上-g则是debug模式。

使用方式

gdb 文件名
3.2 gdb的常用命令
run/r  : 重新开始运行程序
step/s : 单步调试,会进入到函数调用内部
n/next :单条语句执行
break/b 行号   :在某一行设置断点
break/b 函数名 :在指定函数名前设置断点
info break:查看断点信息
finish : 执行到当前函数返回
p 变量  : 打印变量值
set var : 修改变量值
delete breakpoints 断点序号:删除指定断点
disable breakpoints : 禁用断点
enable breakpoints :启用断点
quit/q  :退出gdb

4 Linux项目自动化构建工具-make/Makefile

在介绍makefile之前,你也许用过windows环境下的集成开发环境(IDE)进行编程,我们通常在进行大型项目构建的时候,需要创建多个源文件,每个源文件实现对应的功能,那这些文件时如何构建在一起的,是IDE帮我们做了这件事情,同样makefile就是在Linux操作系统下,做这件事情的一个工具。makefile带来的好处就是"自动化编译",makefile是文件,make是命令。写好makefile之后,再通过对应的make命令来进行项目构建。

4.1 makefile的介绍

首先,我们知道在make命令执行前,我们需要编写好makefile/Makefile文件,这里的m不区分大小写。makefile文件就是告诉make命令怎样去编译和链接程序。

[chakming@localhost test_08_06]$ vim Makefile
4.2 makefile的规则

首先,在了解规则前,先看一个简单的Makefile文件。

  1 myproc : myproc.c                                                                                                                       
  2         gcc -o myproc myproc.c  
  3 .PHONY : clean                                                                                                                          
  4 clean:                                                                                                                                
  5         rm -rf myproc

第一行的myproc : myproc.c冒号前面的是一个目标文件,后面的点c文件,是一个依赖文件。第二行的gcc -o myproc myproc.c 这个是一个执行命令。上面前两行的意思,就是myproc这个目标文件依赖于myproc.c的文件,然后执行下面的命令。命令前会有一个Tab键作为开头。

在我们这个文件底下,有一个已经写好的myproc.c文件

[chakming@localhost test_08_06]$ ls
Makefile  myproc.c

然后接下来,我们执行make命令,会根据对应的依赖关系,比如我们已经有了myproc.c的依赖文件,make会去帮我们执行对应的命令。

[chakming@localhost test_08_06]$ make
gcc -o myproc myproc.c
[chakming@localhost test_08_06]$ ls
Makefile  myproc  myproc.c

再之后,目录下就有了一个myproc的可执行文件,就是通过make执行了makefile文件下的相应的命令。

接下来,我们看看makefile文件的规则

target ... : prerequisites ...
	command
	....

target:目标文件,也可以是一个执行文件,也可以是一个标签。

prerequisites:生成目标文件对应的依赖文件

command:要执行的命令

简单来说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行

4.3 make是如何工作的呢

也许看完前面讲的规则,我们只知道大概的书写方式,对于这个make命令是如何实现的并不清楚,那make命令是如何实现的呢,以前面的例子为基础:

  1. 在执行了make命令后,会在我们当前目录下找名字为“makefile”或者“Makefile”的文件
  2. 如果找到,它会找文件的第一个目标文件,也就是myproc。并把这个文件作为最终的目标文件。
  3. 如果myproc文件不存在,或是后面的依赖文件比目标文件更新,那么就会执行后面的命令来生成myproc文件。
  4. 如果说myproc.c这个文件也不存在,就会继续查找对应的依赖关系。
  5. 如果找到了,就执行了下面的命令,生成了对应的可执行文件,就可以在当前目录下看到对应的文件。

make指令就是这样一次一次的根据依赖关系去执行,而第一个目标文件,就是最终的目标文件。

我们,发现在例子中,还有一个clean,像clean这种并没有对应的依赖文件,也没有与第一个目标文件直接或间接的关联,那么对应的命令便不会自动被执行,但是如果要显示执行,需要

[chakming@localhost test_08_06]$ make clean
rm -rf myproc

然后在clean前,有个.PHONY进行修饰,这是一个伪目标,也就是总是被执行的。可以理解为clean这个其实并不是一个文件,是为了防止目录下有一个clean文件存在,导致make执行的时候,没办法执行clean。
中,还有一个clean,像clean这种并没有对应的依赖文件,也没有与第一个目标文件直接或间接的关联,那么对应的命令便不会自动被执行,但是如果要显示执行,需要

[chakming@localhost test_08_06]$ make clean
rm -rf myproc

然后在clean前,有个.PHONY进行修饰,这是一个伪目标,也就是总是被执行的。可以理解为clean这个其实并不是一个文件,是为了防止目录下有一个clean文件存在,导致make执行的时候,没办法执行clean。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值