目录
Linux软件包管理器yum
Linux开发工具
文本编辑器vi、vim
vim的基本概念
vim操作
Linux编译器-gcc\g++使用
函数库分为动态库和静态库
Linux调试器gdb使用
在gdb模式下的命令
Linux软件包管理器yum
yum怎么说呢?就相当我们手机里的应用商店。我们需要安装的软件,需要使用yum安装。
注意:关于yum的操作,必须保持在网络畅通的情况下!(可以使用ping命令验证)
rzsz这个工具用于windows 机器和远端的 Linux 机器通过 XShell 传输文件。
我们可以使用命令行进行查看。
关于yum的安装和卸载命令如下:(安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成)
Linux开发工具
文本编辑器vi、vim
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且 还有一些新的特性在里面。
vim的基本概念
vim有12种模式,但是我们大多数掌握三种模式即可。即命令模式、插入模式和底行模式
命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式
插入模式:只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。
底行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes
vim操作
下边是三种模式下各自的大多数的命令集
Linux编译器-gcc\g++使用
gcc是C使用的编译器,g++是C++使用的编译器。
C程序的执行需要完成预编译、编译、汇编和链接四个过程。
预编译(进行宏替换)
预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
预处理指令是以#号开头的代码行。
实例: gcc –E hello.c –o hello.i 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。
编译(生成汇编)
在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查 无误后,gcc 把代码翻译成汇编语言。
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
实例: gcc –S hello.i –o hello.s
汇编(生成机器可识别的机器码(二进制))
汇编阶段是把编译阶段生成的“.s”文件转成目标文件
读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
实例: gcc –c hello.s –o hello.o
链接(生成可执行文件或库文件)
在成功编译之后,就进入了链接阶段。
实例: gcc hello.o –o hello
函数库分为动态库和静态库
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也 就不再需要库文件了。其后缀名一般为“.a”
动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态 库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc hello.o –o hello
gcc默认生成的二进制程序,是动态链接的。
Linux调试器gdb使用
进入gdb调试----->gdb + 可执行文件
退出gdb天使----->quit
查看可执行文件的段构层----->readdlf -S + 可执行文件
当我们在段构成中寻找debug信息的时候,什么都没找到,也就是说,Linux环境下默认情况下是release版本
而当我们需要debug版本的时候,需要加入-g选项。因为dubug版本相对release版本会加入debug信息,因而debug版本的文件会比release版本更大。我们可以从下图中观察。
在dubug版本中我们也能清楚的查看到debug信息
在gdb模式下的命令
r(run)------>运行程序
l(list) + 行号----->显示具体行号的代码
b(breakpoint) + 行号----->在具体位置打上断点
info + b------>查看断点信息
s(step)----->逐语句
n(next)------>逐过程
display + 变量名------>查看变量的值(常显示)
p(print) + 变量名------>查看变量的值(只显示一次)
undisplay + 对应编号--------->取消查看变量的值(针对常显示情况)
finish----->自行跑完一个函数
c(continue)------>调试至第二个断点
until + 行数------>跳转至指定行
d(delete) + 对应编号------->删除断点
disable + 对应编号------->禁用断点
enable + 对应编号------->启用断点