常用工具:1.yum软件包管理器 2.vim文本编辑器 3.gcc编译器 4.Makefile辅助编译 5.gdb调试器 6.git
1.yum软件包管理工具
查看可以安装的软件包:yum list | grep **
安装软件包:yum install 安装软件名 (lrzsz 向windows文件传输的软件包)
移除软件包:yum remove 安装软件名
2.vim编辑器
对文本的操作:插入数据、保存、删除、复制、粘贴、剪切、滚动显示位置、改变输入位置
vim 为了能够实现所有的操作,因此有很多的模式,每个模式下所完成的功能各有不同
vim共有12中模式,最常用的:插入模式、普通模式、底行模式
模式之间相互切换:普通模式(ESC)作桥梁,进入(i)插入模式和底行模式(:)先进入普通模式
插入模式的进入方式:i在光标出进行插入;a光标向后移一个字符,开始插入;o在光标所在行的下一行进行插入;
I光标移动到行首进入插入;A光标移动到行尾进入插入;O光标移动到光标所在的上一行进入插入;
底行模式的操作::进入底行模式;:w保存;:q退出;:wq保存并退出;:q!强制退出(不存保存修改);:!(pwd)临时执行命令
普通模式下的操作:
移动光标:k上j下h左l右按字符移动,w右b左按单词移动,ctrl +b上 +f下翻页,gg首 G尾光标移动文档的首、尾行;
复制:yy 复制光标所在一行数据;nyy:n是一个数字,从光标所在行开始复制n行数据;复制一个单词:1.按v进入选中模式,2.移动光标选中文本,3.按y复制选中内容,4.按p粘贴到指定位置;
粘贴:p 向光标所在行下方粘贴;P向光标所在行上方粘贴;
剪切:dd删除光标所在行;ndd :n是一个数字,从光标所在行开始删除n行数据;
滚动界面:dw剪切从光标位置开始的单词、x剪切光标所在位置的字符、s删除光标所在字符,进入插入模式;
其他操作:u撤销上一次操作、ctrl+r还原撤销的操作、gg=G自动缩进、v ctrl + v进入视图选中模式;
3.gcc编译器:将高级语言代码编译成为机器可识别的指令代码
编译步骤:
1.预处理:展开所有代码
2.编译:纠错(检查是否有语法、语义上的错误),没有错误则将C语言代码编译成为汇编代码
3.汇编:将汇编代码编译成为机器指令代码
走完汇编只是将当前.c文件编译成了自己的机器指令代码,其它的函数还没有拿过来,这个文件虽然是机器指令代码,但是不能执行。
4.链接:将所有调用的代码实现都拿过来生成可执行程序
将其它文件中调用的函数都拿过来,跟自己的程序合起来生成可执行程序
库:存放函数实现代码的文件(查看动态链接库:ldd 可执行文件名)(不可查看静态库)
动态库:生成可执行程序,链接动态库称为动态链接(.so是动态库文件);命名方式:lib***.so
动态链接:链接动态库,只记录动态库的位置符号信息,代码冗余量小,占用资源少,但是对库的依赖程度高
静态库:生成可执行程序,链接静态库称为静态链接;命名方式:lib***.a
静态链接:链接静态库,直接将库文件中的代码拷贝到可执行程序中,代码冗余量高,占用资源多,但是对库的依赖程度低
gcc编译器默认链接方式是动态链接
gcc常用选项:
-E 仅预处理
-S 仅编译
-c 仅汇编
-o 指定生成的文件名称
-static 链接方式指定为静态链接
4.Makefile辅助编译:就是一个文件,但是有一个make命令,会逐步执行Makefile中记录的编译规则
Makefile就是用于记录项目的编译规则的,辅助项目的自动化编译
命名:Makefile 或者 makefile
编写:
执行:make程序当前目录下找Makefile文件,解释执行
1.到当前目录下查找Makefile文件,找不到报错
2.在文件中找第一个目标对象,并把这个对象当做终极目标
3.检测这个目标对象和依赖对象的最后一次修改时间,判断是否需要重新编译,如果修改时间不一样则不需要重新编译,退出
4.如果目标对象不存在则直接生成,但是依赖对象可能不存在
5.为了生成终极目标,首先要保证依赖对象都存在,所以会先生成所有的依赖对象(依赖对象的生成关系也是用户在下边定义的)
声明伪对象:.PHONY
伪对象:每次都需要重新生成
预定义变量:$@ (指目标对象) $^(指所有的依赖对象) $<(指所有依赖对象中的第一个)
//在项目编译过程中,更倾向于先将.c文件编译生成.o文件,然后再将所有.o文件链接生成可执行程序
= := ?= +=的区别:=赋值不是计时赋值(只有用到a时才对a进行赋值,不需开辟空间);:=计时赋值(直接开辟空间,给a赋值);?=,没有初始值,进行赋值;+=追加赋值;
5.gdb调试工具
1.在编译程序的时候,向可执行程序中添加调试符号信息:gcc -g
2.运行gdb加载程序:gdb ./可执行程序名;不能携带参数,因为参数会被当做gdb的参数
3.调试操作:
run:直接运行程序 ;并且程序的命令行参数就是在这里赋值的
start:逐步调试
list(l 行数):查看代码
step(s):下一步,跟踪进入函数
next(n):下一步,不跟踪进入函数
until:直接运行到指定行
print(p):打印变量内容
bt:查看函数调用栈信息(快速定位错误的方法)
break(b):打断点:line 向当前调试的文件指定行打断点;file line 向指定文件的指定行打断点;func 向指定函数打断点
info(i):查看信息
info(i)break(b):查看断点信息
delete(d)break(b):删除断点
watch:变量监控,当变量内容发生改变则停下来 (watch var变量名)(continue(c)继续运行)
6.git工具
git项目版本控制工具:分布式管理
svn项目版本控制工具:集中式管理
linux下的三板斧:
git clone https-url 从github上克隆代码到当前路径
git add file 添加要提交的文件
git commit -m "desc" 本地提交
git push 上传代码
git使用ssh,生成密钥
ssh-keygen 提示信息直接回车即可
家目录下.ssh目录下id_rsa.pub文件中的内容就是公钥信息,复制公钥信息,到git个人设置的sshkey中