目录
一、Linux 软件包管理器yum
1、什么是软件包
2、yum的使用
a. 检察软件包:yum list
b. 安装 yum install
c. 卸载:yum remove
二、Linux编辑器--vim
1、vim根本概念
2、vim的根本操纵
a. 进入vim
b. 正常模式切换到插入模式
c. 插入模式切换到正常模式
d. 正常模式插入到底行模式
e. 退出vim以及保存文件
3、vim 正常模式常用下令集
4、vim 底行模式常用下令集
5、vim中批量化解释和取消解释
a. 批量化解释:
b. 批量化去解释:
6、vim配置方法
三、Linux编译器--gcc/g++
1、gcc工作步调
a. 预处置处罚(进行宏更换)
b. 编译(生成汇编)
c. 汇编(生成机器可识别代码)
d. 链接(生成可实行文件或库文件)
2、补充:函数库
a. 函数库的引入
b. 函数库的分类
3、gcc相干选项
四、Linux调试器--gdb
1、引入
2、gdb常用选项
五、Linux项目自动化构建工具--make/makefile
1、引入
2、如何写一个makefile
一、Linux 软件包管理器yum
1、什么是软件包
在Linux下安装软件,一个通常的办法时下载到程序的源代码,然后编译得到可实行程序。但是如许做着实是太麻烦了,于是有些人就把一些常用的软件提前编译好,做成软件包放在服务器上,通过管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和管理器,就好比像是 "app"和软件商店这种关系。 CentOS使用yum(Yellowdog Updater, Modified)作为其包管理体系,而Ubuntu使用apt(Advanced Package Tool)作为其包管理体系,本文只对yum进行讲解。 2、yum的使用
a. 检察软件包:yum list
可以罗列出当前一共有哪些软件包. 由于包的数目大概非常之多, 这里我们可以配合使用 grep 下令筛选出我们需要的包。例如我们来查找一下gcc 或者 lrzsz的包:
注意事项: 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构. "x86_64" 后缀表示64位体系的安装包, "i686" 后缀表示32位体系安装包. 选择包时要和体系匹配。 "el7" 表示操纵体系发行版的版本. "el7" 表示的是 centos7/redhat7. 最后一列, base 表示的是 "软件源" 的名称, 雷同于 "小米应用商店", "华为应用商店" 如许的概念。 b. 安装 yum install
yum 会自动找到都有哪些软件包需要下载,,这时候敲 "y" 确认安装.。出现 "complete" 字样, 阐明安装完成。
注意事项:
安装软件时由于需要向体系目录中写入内容, 一样平常需要 sudo 或者切到 root 账户下才能完成 yum安装软件只能一个装完了再装另一个。正在yum安装一个软件的过程中, 假如再尝试用yum安装另外 一个软件, yum会报错. c. 卸载:yum remove
二、Linux编辑器--vim
1、vim根本概念
vim有很多模式,这里我们只先容最常使用的三种:
(1)、正常 / 平凡 / 下令模式(Normal mode):控制屏幕光标的移动,字符,字或者行的删除,移动复制某区段以及进入插入模式,底行模式下。
(2)、插入模式(Insert mode):只有在插入模式下,才可以做笔墨输入,按ESC键位可以回到正常模式。
(3)、底行模式(last line mode):文件保存或者退出,也可以进行文件更换,查找字符串,列出行号等等一系列操纵。在下令模式下,按 shift+:即可进入底行模式。
(4)、要检察所有模式:打开vim,底行模式直接输入: help vim-modes
2、vim的根本操纵
a. 进入vim
在体系提示符号输入 vim+文件名称后,就可以进入vim的编辑页面,进入vim后处于正常模式,需要我们切换到插入模式才可以或许输入笔墨。
那么正常模式如何切换到插入模式呢?
b. 正常模式切换到插入模式
按 'a' : 将插入点移动到当前光标地点字符的右侧,然后进入插入模式,适用于在当前字符之后插入文本。
按 'i' : 将插入点移动到当前光标地点的位置,进入插入模式,适用于在当前光标处插入文本。
按 'o' : 在当前光标的下一行处创建一个新行,并将插入点移动到该新行的开始处,适用于在下一行开始的位置输入文本。
c. 插入模式切换到正常模式
这个很简单我们只需要按一下键盘的ESC键位,就可以切换到下令模式了。
d. 正常模式插入到底行模式
按住 shift+; 实在就是 ' : ' 就可以进入底行模式。
e. 退出vim以及保存文件
在正常模式下按住 shift+;进入底行模式,然后输入w(保存当前文件),wq(保存文件并退出),
q!(不保存逼迫退出),w!(逼迫保存)。
3、vim 正常模式常用下令集
shift+$ | 光标定位在当前行的最右侧末端处 | n+yy | 复制当前行 / 多行 | shift+^ | 光标定位在当前行的最左侧末端处 | n+p | 在下一行进行粘贴/可以多次粘贴 | shift+g | 光标定位到文本的最后一行 | u | 撤销编辑操纵 | n+shift+g | 光标定位到文本的第n行 | ctrl+r | 对撤销进行撤销 | gg | 光标定位到文本的最开始 | n+dd | 删除当前行 / 多行 | h | 左移 | shift+` =~ | 大小写快速切换 | j | 下移 | n+r | 更换当前光标地点的字符 | k | 上移 | shift+r =R | 更换模式 | i | 右移 | n+x | 删除光标地点字符
向右侧进行局部删除
| w | 按照"单词"在行内进行移动,后移
光标跳到下个单词的开头 | n+shift+x =X | 向左侧进行局部删除 | b | 按照"单词"在行内进行移动,前移
光标跳到上一个单词的开始
| shift+3 =# | 高亮查找的函数名 | e | 按照"单词"在行内进行移动,后移
光标跳到下个单词的末端 | n | 下一个查找到的函数/字符串名 | 4、vim 底行模式常用下令集
: set nu | 列出行号 | : q/q! | 退出/逼迫退出 | : # | #表示一个数字,在冒号后输入一个数字再回车就会跳到该行 | : wq/wq! | 保存并退出/逼迫保存并退出 | : /+字符 | 从光标地点地,向下滚动搜刮字符
可以按 n 会往后寻找到您要的关键字为止
| : !+下令 | 不退出vim实行shell下令 | : ?+字符 | 从光标地点地,向上滚动搜刮字符
可以按 n 会往前寻找到您要的关键字为止
| : vs +文件名 | 分屏打开某个文件,假如该文件在其他目录则需要加上路径 | :w/w! | 保存/逼迫保存 | ctrl + ww | 光标多终端切换 | 5、vim中批量化解释和取消解释
a. 批量化解释:
第一步:ctrl+v 第二步:hjkl 进行区域选择 第三步:shift+i 第四步:// 第五步:esc
b. 批量化去解释:
第一步:ctrl+v 第二步:hjkl 进行区域选择 第三步:d
6、vim配置方法
在目录 /etc/ 下面,有个名为vimrc的文件,这是体系中公共的vim配置文件,对所有用户都有效。
而在每个用户主目录下,都可以自己创建私有的配置文件,可以命名为" .vimrc "。
在个人用户下配置vim:
起首我们要进入自己的家目录:cd ~ (pwd检察一下)
然后先touch .vimrc 再打开vim .vimrc,此时就可以在.vimrc中进行相干配置了
三、Linux编译器--gcc/g++
1、gcc工作步调
a. 预处置处罚(进行宏更换)
预处置处罚功能主要包括宏定义,文件包含,条件编译,去解释等。
预处置处罚指令是指以#号开头的代码行。
例如:gcc -E test.c -o test.i
选项:"-E" 作用是从如今开始进行程序翻译过程,当预处置处罚完成时就停下来。选项:"-o" 时指定目标文件;".i" 是预处置处罚后的代码文件。
b. 编译(生成汇编)
在这个阶段中,gcc 起首要检查代码的规范性,是否有语法错误等,以确定代码实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。
例如:gcc -S test.i -o test.s
选项:"-S" 作用是从如今开始进行程序翻译,当编译工作做完就停下来,只进行编译而不进行汇编,生成汇编代码。".s" 是汇编语言代码的文件。
c. 汇编(生成机器可识别代码)
汇编阶段是把编译阶段生成的".s" 文件转成目标文件,"-c" 选项的作用是从如今开始进行程序翻译 ,当汇编工作做完就停下来,我们可以通过"-c"就可以看到汇编代码已转换为".o" 的二进制目标代码。
例如:gcc -c test.s -o test.o
d. 链接(生成可实行文件或库文件)
在成功编译之后,就进入了链接阶段。
例如:gcc test.o -o test
2、补充:函数库
a. 函数库的引入
我们的C程序中,并没有定义"printf"的函数实现,而且在预编译中包含的"stdio.h"中也只有该函数的声明而没有定义函数的实现,那么是在那里实现的"printf"函数呢? 实际上,体系把这些函数实现都放到了名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc会到体系默认的搜刮路径"/usr/lib" 下进行查找,也就是链接到 libc.so.6 库函数中去,如许就能实现函数"printf"了,而这也就是链接的作用。 对于上面生成的可实行文件test,我们可以通过 ldd test 来检察可实行程序依靠的库。
b. 函数库的分类
函数库分为动态库和静态库两种。
静态库:静态库是指编译链接时,把库文件的代码全部加入到可实行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀一样平常为".a"。
动态库:动态库是指在编译链接时并没有把库文件的代码加入到可实行文件中,而是在实行程序时由运行时链接文件加载库,如许可以节省体系的开销。动态库一样平常后缀为".so", 如上面所说 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可实行文件。
gcc默认生成的二进制程序,是动态链接的,可以通过file下令或ldd来检察。
C/C++ (yum安装静态库):
sudo yum install -y glibc-static libstdc++-static
那么gcc如何链接动静态库呢?
我们来检察一下,是不是分别链接了动态库和静态库:
3、gcc相干选项
-E | 只激活预处置处罚,不生成文件,需要把它重定向到一个输入文件内里 | -g | 生成调试信息,GUN调试器可以利用该信息 | -S | 编译到汇编语言不进行汇编和链接 | -shared | 这个选项将只管使用动态库,所以生成文件比较小,但是需要有体系动态库 | -c | 编译到目标代码 | -w | 不生成任何告诫信息 | -o | 文件输出到 文件 | -Walll | 生成所有告诫信息 | -static | 采用静态链接 | -O0,-O1,
-O2,-O3
| 编译器的优化选项的4个级别,
-O0表示没有优化,-O3优化级别最高
| 四、Linux调试器--gdb
1、引入
程序的发布方式有两种,dubug模式和release模式,Linux gcc/g++出来的二进制程序,默认是release模式,要使用gdb调试,必须在源代码生成二进制程序的时候,加上 -g 选项。
2、gdb常用选项
l(list)+行号 | 表现指定行之后的代码 | disable+编号 | 关闭断点 | l(list)+函数名 | 列出某个函数源代码 | enable+编号 | 启用断点 | r(run) | 运行程序 | n(next) | 逐过程 | b(break)+行号 | 在指定行打断点 | s(step) | 逐语句 | b(break)+函数名 | 在指定函数打断点 | p | 表现变量内容或地址(只表现一次就会消散)例如:p i,p &i | b(break)+文件名+行号或函数名 | 在指定文件的指定行/指定函数打断点 | display | 常表现变量的内容或地址
例如:display i,display &i
| info b(break) | 检察断点信息 | undisplay | 取消常表现 | d+编号 | 删除断点 | bt | 检察调用堆栈 | c | 从一个断点到下一个断点
(范围查找)
| finish | 将一个函数来运行结束就停下来
(范围查找)
| until+行号 | 在一个范围内直接运行到指定行(范围查找) | info locals | 检察当前栈帧局部变量的值 | set var
set var变量名=值
| 修改变量的值
(不需要改动代码,进行多分支测试使用)
| quit(q)
ctrl + d | 退出gdb | d+编号:这里的编号指:在Linux操纵体系中,打完断电之后,会对打完断点的这些行进行重新排列次序。
逐过程:每行看做一个团体包括函数(不进入函数)。
逐语句:C的语句,函数由多条语句构成(进入函数)。
五、Linux项目自动化构建工具--make/makefile
1、引入
makefile 的利益就是--"自动化构建",一旦写好,只需要make下令,整个工程完全自动编译,极大的提高了软件开辟的效率。make是一个下令工具,是一个解释makefile(它是个文件)中指令的下令工具,两者搭配使用,完成项目自动化构建。
2、如何写一个makefile
第一步:touch makefile 第二步:vim makefile 第三步:在makefile中写相干指令 第四步:退出
对于clean来说,没有被第一个目标文件直接或者间接关联,那么它后面所定义的下令将不会被自动实行,但是一样平常我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是总是被实行的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |