本文已参与「新人创造礼」活动,一同开启创造之路。


一、软件包管理器yum

1.什么是软件包

Linux下装置软件, 通常的办法是下载程序的源代码、编译、得到可履行程序。可是这样费事、不便于操作,所以一些人把常用的软件提早编译好, 做成软件包(能够理解成windows上的装置包)放在一个服务器上, 通过包管理器能够很方便的获取到这个编译好的软件包, 直接进行装置。

软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的联系。

yum是Linux下十分常用的一种包管理器. 首要应用在Fedora, RedHat, Centos等发行版上。


2.ping

因为yum是从服务器上获取装置包,关于 yum 的所有操作必须保证主机(虚拟机)网络畅通,网络是否畅通能够通过 ping 指令验证。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


3.检查所有软件包

通过yum list能够看到所有的软件包(软件包有许多,下图只截取了其间一部分)。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

通过与grep指令配合能够搜索出指定的软件包。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


4.装置软件包

通过sudo yum install xxx可装置xxx软件,这儿以lrzsz为例进行装置。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


5.卸载软件包

卸载指令sudo yum remove xxx可卸载xxx软件包,操作同上。


二、修改器vim

0.vim的装备

原生的vim不便于运用,需求通过装备来让它的运用更加方便。

(1)装备文件

在目录 /etc/ 下面,有一个名为vimrc的文件,这是体系中公共的vim装备文件,对所有用户都有用。而在每个用户的主目录下,都能够自己树立私有的装备文件,命名为:.vimrc,在这儿装备的vim不会影响其他用户。

进入用户的主作业目录,找到自己目录下的.vimrc文件,履行 vim .vimrc,即可装备自己的vim。


(2)装备vim

在其间输入特殊的指令即可修改vim的选项,能够用下面三条指令进行测验。

设置语法高亮: syntax on 显现行号: set nu 设置缩进的空格数为4: set shiftwidth=4


在shell指令行中履行下面的指令(想在哪个用户下让vim装备生效, 就在哪个用户下履行这个指令. 强烈 “不引荐” 直接在 root 下履行),依据提示操作,即可将vim变成一个c++编译器。

curl -sLf gitee.com/HGtz2222/Vi… -o ./install.sh && bash ./install.sh

(原文地址:gitee.com/HGtz2222/Vi…


1.vim的形式

vim有许多形式,在我运用的服务器上有七种基本形式和六种附加形式。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)
本文只介绍常用的三种形式:指令形式(Normal mode)、刺进形式(Insert mode)、底行形式(last line mode)。


2.形式间的转变

先上一张图表明三种形式的联系。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


vim翻开时默许是指令形式,如下。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

此刻假如输入一般的代码很或许没有响应,因为在指令形式下,vim将输入的内容当做指令看待,假如我们按照代码输入,就很难会呈现指令,所以大多数时分没有反应。

此刻假如按一下i就能够转入刺进形式,左下角会变成下图的样子,表明进入刺进形式,这时就能够在修改器内输入内容。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

这时再按Esc退回一般/指令形式。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)
假如想要退出vim,则要在底行形式(shift+;即输入一个:)下输入q退出。输入w能够保存,但装备过的vim修改器会主动保存,所以w可省略;假如用的是原生的vim(没有装备过的),就需求手动保存。
【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


3.指令形式(Normal mode)

(1)指令形式向刺进形式转换

指令形式向刺进形式转换能够输入:a(光标向后移动一个字符后进入刺进形式),i(直接进入刺进形式),o(换行后进入刺进形式)。


(2)指令形式下常用的修改指令

shift+^:光标定位到当时行的最初
shift+$:光标定位到当时行的末尾
shift+g:光标定位到当时文本的最后一个方位
gg:光标定位到当时文本的第一个方位
n+shift+g:光标定位到当时文本第n行的最初
yy:仿制光标所内行
n+yy:从光标所内行开端,仿制下面n行的内容
p:粘贴内容
n+p:将内容粘贴n行
u:撤销
ctrl+r:恢复刚刚的撤销
dd:删去光标所在的行(这儿是剪切,也就是说删去后可直接粘贴被删去的内容)
n+dd:从光标所内行开端,删去下面n行的内容
shift+~:对光标所在的方位进行大小写转换
w:以“单词”为单位进行跳转,跳到下一个“单词”的最初(从左往右,从上到下)
b:以“单词”为单位进行跳转,跳到上一个“单词”的最初(从右往左,从下到上)
e:以“单词”为单位进行跳转,跳到下一个“单词”的结尾(从左往右,从上到下)
(这儿的“单词”或许是一组字母,也或许是符号)
x:删去光标所在方位的内容
n+x:删去从光标开端n个方位的内容
shift+x:删去光标之前方位的内容(不包括光标所在方位)
shift+n+x:删去光标之前x个方位的内容(不包括光标所在方位)
r:输入r之后再输入内容会将光标所在方位的内容进行替换
n+r:替换从光标开端n个方位的内容(每个方位的内容都相同)
shift+r:进入替换形式,下面的操作全部是替换(按Esc回来指令形式)
h、j、k、l:左、下、上、右(和方向键的功用相同,可是主张用字母而不是方向键,因为方向键或许呈现不兼容的问题)
ctrl+b:下翻一页
ctrl+f:上翻一页
ctrl+u:下翻半页
ctrl+d:上翻半页

在指令形式下进行文本修改的功率十分高,所以主张尽量在指令形式下修改。


4.刺进形式(Insert mode)

指令形式按a/i/o进如刺进形式,刺进形式与Windows下正常的文本修改没什么差异,此处不再赘述。


5.底行形式(last line mode)

指令形式shift+;进入底行形式,常用的指令如下:

set nu:设置行号
set nonu:撤销行号
w:写入(保存)
w!:强制写入(但也有或许写入不成功)
q:退出
q!:强制退出
!+其他指令:在底行形式下,输入!后即可履行ls,ll,gcc等指令,即不退出vim就看履行指令行的指令

vs指令+filename:分屏显现,若filename不存在,则会新建。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)
【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)
通过ctrl+w+w可在多个选项卡之间切换。

注意分屏不仅仅能够分两个,分屏能够分许多个。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

底行形式下退出分屏时,光标在哪个文件就退出哪个文件。


三、编译器gcc/g++

gcc用来对C言语文件编译,g++用来对c++文件编译,选项几乎是相同的,下面以gcc为例。

1.从源文件到可履行文件

从一个.c为后缀的源文件到一个.exe为后缀的可履行文件需求通过下面四个步骤。

(1)预处理(-E)

首要包括:头文件展开、去注释、宏替换、条件编译。 在Linux中能够通过gcc的–E选项来让源文件在预处理完毕后停止并生成同名的.i后缀文件。


(2)编译(-S)

检查代码的规范性、是否有语法错误等,以确定代码实践要做的作业,在检查 无误后,把C言语代码翻译成汇编言语。 在Linux中能够通过gcc的–S选项来让源文件在编译完毕后停止并生成同名的.s后缀文件。


(3)汇编(-c)

生成机器可辨认代码,把编译阶段生成的.s文件转成方针.o文件,转化完毕后,文件是二进制方针文件。 在Linux中能够通过gcc的–c选项来让源文件在汇编完毕后停止并生成同名的.o后缀文件。


(4)链接(无选项)

将代码中库函数的调用和库中库函数的完成关联起来。

这儿要介绍一个概念:函数库 函数库一般分为静态库和动态库两种。

静态库

链接时把库文件的代码全部参加到可履行文件中,因而生成的文件占用的空间比较大,但在运行时也就不再需求库文件了,这样程序的可移植性强。 静态库后缀名一般为.a。

动态库

链接时不把库文件的代码参加到可履行文件中,而是在程序履行时由链接文件加载库,生成的文件体积小、速度快,但可移植性差。 动态库一般后缀名为.so。

gcc在链接时默许运用动态库。


2.常用选项

除了上面的-E、-S、-c选项外,下面还有一些常用选项。

-static:此选项对生成的文件采用静态链接 -O0、-O1、-O2、-O3:编译器优化选项的4个等级,-O0表明没有优化,-O3优化等级最高 -w:不生成任何正告信息。 -Wall:生成所有正告信息。 -o+filename:将生成的文件命名为filename


四、调试器gdb

下面以一个简单的从1加到100的代码演示调试,源文件生成的可履行文件为Mytest。

代码如下:

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


直接gdb+被调试文件名进入调试,如下

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)
但最后提示没有调试信息。这儿是因为在Centos 7 gcc中默许生成的可履行程序是release版别的,不可被调试。通过编译时添加-g选项让程序成为debug版别。
【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

1.显现代码list/l


【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


2.运行r

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


3.断点b、检查断点info、删去断点d

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


4.逐进程n(不进入函数)、逐句子s(进入函数)

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


5.暂时检查变量的值p

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


6.添加检查display

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


7.撤销检查undisplay

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


8.跳转until

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


9.完毕函数finish

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


10.跳转到下一断点c

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


11.退出调试quit

五、主动化构建:make+makefile

1.背景

一个工程中的源文件不计数,其按类型、功用、模块别离放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需求先编译,哪些文件需求后编译,哪些文件需求重新编译,甚至于进行更杂乱的功用操作。 makefile带来的优点就是——“主动化编译”,一旦写好,只需求一个make指令,整个工程完全主动编译,极大的进步了软件开发的功率。 make是一条指令,makefile是一个文件,两个调配运用,完成项目主动化构建


2.依靠联系、依靠办法

举例如下:

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


makefile中一行是依靠联系,紧跟的一行是依靠办法。上面从一个.c文件到一个.exe文件经历的依靠联系和依靠办法写全后如下。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

mytest依靠test.o通过gcc链接得到,test.o依靠test.s通过gcc -c汇编得到,test.s依靠test.i通过gcc -S编译得到,test.i依靠test.c通过gcc -E预处理得到。 (冒号左边是得到的文件,冒号右边是被依靠的文件)

make后就能够得到所有需求的文件。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

尽管这些进程在这个场景下能够gcc一步搞定,可是假如有其它多个文件需求处理,这么多行的指令写进makefile后只需一个make即可全部履行,功率有很大的进步。


3.项目清理

能够看到上面产生了许多文件,假如一个个清理又会很费事,在makefile中 参加clean选项便可像make那样直接铲除某些文件。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)
【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)
上面的.PHONY是伪方针,这样写表明clean总是被履行。


4.宏替换

$@:依靠联系中的方针文件(冒号左边的文件)

$^:依靠联系中的依靠文件列表(冒号右边的所有文件)

$<:依靠联系中的一个依靠文件

将makefile修改为如下宏替换后的结果,这样当依靠文件或方针文件改动时,依靠办法不需求改动。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

仍能正常运行。

【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)


感谢阅读,如有错误请批评指正