目录
yum: 软件包管理工具
查看软件包: yum list
查看具体安装包 yum list | grep pack_name
检查Linux是否联网: ping 网址
安装软件包: yum install pack_name eg: yum install gcc
移除软件包: yum remove pack_name
vim
vim没有鼠标,为了完成插入删除,复制等操作因此分为了许多模式(12种)
常用三种模式: 命令行模式(底行模式),插入模式, 普通模式
- 插入模式: 插入 数据
- 普通模式: 完成命令操作(移动光标,复制,粘贴,删除,撤销)
- 底行模式: 保存文件,退出编辑
熟悉三种模式切换(vim filename->打开文件,不存在就进行创建)
普通模式->插入模式:
- i(从光标所在位置开始插入)
- I(光标移动行首,进行插入)
- a(光标移动到下一个字符处开始插入)
- A(光标移动到行尾,进行插入
- o(在光标所在行下方添加新行开始插入)
- O(在光标所在行上方添加新行开始插入)
插入模式->普通模式: Esc
普通模式->底行模式: : / ?
底行模式下的操作 :w (保存) :q(保存) :q!(强制退出) :q(退出) //保存退出操作 /string ?string 字符串查找
底行模式->普通模式: Esc
普通模式下的操作:
- 光标移动: h左 j下 k上 l右 w或者b 按单词移动光标 ctrl+f/ctrl+b 上下翻页 G移动到文档尾部 gg移动到文档头部
- 复制: yy 复制光标所在行 nyy从光标所在行复制n行数据
- 粘贴: p向光标所在行下方粘贴 P向光标所在行上方粘贴
- 删除: dd 删除光标所在行 ndd删除光标所在行下方n行数据 x 删除光标所在字符 dw删除单词 D删除光标后的数据
- 撤销: u
- 恢复撤销: ctrl+r
gcc/g++编译器
解释程序不需要进行编译,可以直接执行 如 Python,shell语言
gcc将高级语言(C语言)编译成机器可以识别的语言
- 预处理:去掉注释,展开代码
- 编译: 语法语义纠错,将C语言代码解释成汇编代码
- 汇编: 将汇编代码解释为机器指令
- 链接: 链接库文件中的代码
静态链接: 链接静态库 将库中代码拷贝到程序中,程序较大,但是运行时不需要依赖静态库的存在. 静态库如果多个程序使用了相同的静态库,运行程序被加载到内存中,会出现多份冗余代码
动态链接: 链接动态库 记录函数位置符号信息,,程序比较小,但是运行时需要动态库的存在,而动态库,在内存中共享同一份动态库代码.
gcc默认链接方式是动态链接
gcc常用选项:
-E 只进行预处理 -S只进行编译 -c只进行汇编 -o 用于指定生成文件名称 -static使用静态链接
格式 : gcc [选项] 要编译的文件 [选项] [目标文件]
实例: gcc –E hello.c –o hello.i
gcc –S hello.i –o hello.s
gcc –c hello.s –o hello.o
gcc -o hello.o -o hello
Linux调试器gdb
功能:调试程序运行过程-----调试Bug---分析程序的错误原因.及错误位置
gdb加载程序的 时候,如果有程序运行参数,不能加载的时候给与应该开始调试的时候给与
gdb ./main-> run -l -a
0.向程序中假如调试符号信息(程序调试的前提)
gcc默认生成release发布版本程序,可执行程序中没有加入调试符号信息,无法实现逐步调试
gcc -g 生成debug版可执行程序
1.加载程序
gdb ./main
2.开始调试
run : 直接运行程序 start: 开始逐步调试
3.常见操作
list 查看代码 格式: list file: line
n :下一步,不跟踪进入函数,直接将函数运行完毕 s: 下一步,跟踪进入函数
until 直接运行到指定行 格式: until file:line
4.断点相关操作(重点)
break file:line 打断点 break function_name 给函数打断点
info 查看调试信息 eg: info break查看断点信息
print 查看变量内容 eg: print var (var指的是变量名,下同)
continue 继续运行c
delete 删除断点 eg: delete 删除所有断点 delete break_id 删除指定断点
watch 变量监控,当变量名称改变时,停下来 eg:watch var
5.查看调用栈信息(重点)
bractrace: 查看函数调用栈信息-----快速定位到程序崩溃位置 (bt)
make/Makefile :项目自动化构建工具(重点)
Makefile: 普通文本文件,但是Makefile中记录的是项目的构建流程规则
make: 一个程序---Makefile解释器;解释Makefile中的项目构建规则,完成项目的构建
在当前目录下敲击make命令,make程序到当前目录找makefile文件,逐行解释,makefile文件名大小写不敏感
makefile基本编写规则:
目标对象;[ 依赖对象]
tab 要执行的命令
make解释规则:
make在makefile中寻找第一个对象目标名称:
若没有找到:认为没有要生成的对象,报错退出
若找到了:判断目标对象文件是否存在:
目标对象文件若存在:判断是否依赖对象名称
若没有依赖对象名称:认为目标对象已经生成,不需要重新执行命令生成
若有目标对象名称:判断目标对象文件是否已经存在;
若存在:判断目标对象文件与依赖对象文件的时间关系
若不存在:在makefile继续向下查找依赖对象的生成规则
依赖对象在下一条规则中作为目标对象被生成,进而生成第一个目标对象后退出.
目标对象文件不存在:
则直接执行命令生成
eg:
main:main.o
gcc main.o -o main
main.o:main.c
gcc main.c -o main.o
eg:
text:test.c
gcc -o test test.c
.PHONY:clean
clean:
rm test -f
makefiel预定义变量: $@ $<$^
$@: 目标对象
$^: 所有依赖对象
$<: 依赖对象中的第一个
eg:
main:main.c
gcc $^ -o $@
.PHONY:clean
clean:
rm test -f
伪对象 : 不管对象是否更新,是否存在,每次都需要为对象执行生成命令
声明伪对象: .PHONY :对象名称
git:项目版本管理工具(git精华:分支管理)
基本操作:
下载服务器上的代码:git clone 仓库地址(网址)
修改代码后,本地提交(本地管理)
git add new_file
git commit -m "本次提交的备注信息"
将本地修改提交到服务器:
git push origin master
master是git代码管理主分支