Linux常用工具
1.工具
vim 文本编辑工具
gcc/g++编译器 将C/c++等高级语言程序编译成为机器可识别程序
gdb 程序调试工具
makefile 不普通的普通文件
yum 红帽子系列linux操作系统的软件包管理工具
2.makefile
1)不普通的普通文件;
在makefile中定义很多的程序编译规则,在终端命令行下敲击一个make命令,这时make程序就
会跑到当前目录下找寻这个Makefile文件,然后按照makefile中已 经规划好的编译顺序以及编译
规则来完成整个项目的编译。
2)make命令只在当前目录中找叫make/Makefile文件;
编写:
main.c --> main
目标对象名称 依赖对象名称
制表符[ ] 通过依赖对象生成目标对象的命令;
'main' is up to date说的是,目标对象已经是最新的了,不需要重新生成make这个程序去判断一
下依赖文件的最后修改时间和目标对象文件的最后修改时间,如果目标对象的
时间戳大于依赖文件的时间戳,那么就证明依赖文件在上次编译之后就没有修
改过,不需要编译。
格式:
# makefile编写规则
# 目标对象:依赖对象
# 为了生成生目标对象所执行的命令
#
# make可以检测目标对象与依赖对象的时间属性,判断程序是否需要重新编译
# make永远只找第一个目标对象生成,生成了第一个对象之后就退出了
# make可以指定要生成的对象,例如:make clean
# 伪对象:不管是不是最新的,都需要重新生成(执行下边的生成命令)
# 使用:PHONY来声明一个对象是伪对象
# 变量:预定义变量---makefile中已经提前定义好的变量
# $@ 编写规则中要生成的目标对象
# $^ 编写规则中所有的依赖对象
# $ 编写规则中第一个依赖对象
src=$(wildcard ./*.c)#获取当前目录下以文件名以.c结尾的文件名赋值给src
bin=./main.c
#a=$(bin) #变量的使用需要加上$符号,否则认为是字符串赋值
all:$(bin)
.PHONY:main clean
$(bin):$(src)
gcc $^ -o $@
clean:
rm -f $(bin)
调研:= := += ?=
3.gdb使用:
gdb调试时一个程序需要这个程序在编译时候加上-g选项来开启调试,为可执行程序加入一
些调试符号信息 。gcc -g main.c -o main
gdb加载程序:
gdb ./main
gdb进入之后 file ./main
gdb常用命令:
r 开始运行程序,程序直接跑起来
r -| -s -a 程序的参数在这里加载
start 开始逐步调试程序
l 查看当前行附近代码
n 下一步
s 进入函数
until n 直接运行到第n行
b main.c :n 添加断点
b n
b func 给函数添加断点
i 查看信息
i b 查看当前断点信息
d 删除全部断点
d n 删除指定断点
p i 查看i变量内容
c 继续运行
watch 变量监控,变量内容修改时会停下来
bt 查看函数调用栈信息
4.vim:
从普通模式切换到插入模式的方法:
i:从光标所在位置开始插入
a:从光标所在位置的下一个字符处开始插入
I:将光标移动到行首,然后进入插入模式
A:将光标移动到行尾,然后进入插入模式
O:在光标所在行的上方,新建一行,进入插入模式
s:删除光标所在字符,然后进入插入模式
从普通模式切换到底行模式:
:w 保存
:q 退出
:q! 强制退出(不保存本次修改)
:wq 保存并退出
:!pwd 临时执行命令,按回车返回vim
从插入模式/底行模式返回普通模式
ESC
普通模式下的常用操作:
h 向左移动光标
j 向下移动光标
k 向上移动光标
l 向右移动光标
w 光标向右移动一个单词
b 光标向左移动一个单词
yy 复制光标所在行
nyy 从光标所在行开始向下复制n行
p 向光标所在行下方粘贴新行
P 向光标所在行上方粘贴新行
dd 删除光标所在行(vim种删除其实是剪切)
ndd 从光标所在行开始向下删除n行
x 删除光标所在字符
dw 删除光标位置开始的一个单词
u 撤销操作
ctrl+r 返回撤销操作
ctrl+v 进入列视图模式,可以进行选择操作
v 进入行视图模式,可以进行选择操作
r 替换光标所在字符
R 进入替换模式,对内容一直替换
gg 光标移动到文档首行
G 光标移动到文档末尾行
gg=G 全文缩进对齐
下课调研vim的常用插件以及安装方法
5.gcc使用:
linux下程序的执行就是告诉操作系统程序文件在哪个路径下。
gcc是一个编译工具,将我们所写的C语言程序编程成为机器可识别的语言程序。
ABI---标准
gcc常用选项
-o:指定要生成的文件的名称
-E:只预处理
-S:只编译
-c:只汇编
-static 静态链接(gcc默认是动态链接)
6.程序的编译过程:
预处理
去掉注释,展开所有代码;
编译
先纠错,没有错误则编译成为汇编代码;
汇编
将汇编代码生成机器可识别代码(汇编只是将我们写的代码编译完毕,但是不能运
行,因为代码不完全,我们调用的一些库函数,并不知道如何实现,需要经过第四步
才能生成可执行程序);
链接
将库中的函数链接过来和我们的代码最终合并生成可执行程序。
链接过程有两种:
动态链接:链接的是动态库;
静态链接:链接的是静态库;
动态链接生成的可执行程序小,静态链接大,但是动态链接生成的程序运行时需要动
态库的存在,静态库不需要(因为静态链接就是将库中的函数全部拿过来生成可执行
程序了,所以大);
程序的链接方式默认是动态链接。
7.yum使用:
yum是红帽子系列linux操作系统进行软件包管理的工具;
软件的安装/移除/查看都是通过yum工具完成的。
查看
yum list | grep 想要安装的包名字;
安装
yum install 想要安装的包名字;
移除
yum remove 安装包名字。
下课调研修改/更新yum源的方法
/etc/yum.repos.d/CentOS-Base.repo