文章目录
- 前言
- 一、yum ——*软件包管理工具,完成第三方工具软件的安装与卸载功能*
- 二、vim ——*编辑器,linux写代码的工具*
- 三、g++/gcc ——*编译器,即将高级语言编译成为机器指令*
- 四、gdb ——调试器,调试程序运行过程
- **静态链接:**
- **动态链接:**
- 五、make/makefile ——*项目的自动化构建工具*
- make
- 六、git —— *项目的版本管理工具*
- 总结
前言
本片文章主要介绍Linux编程中,我们这些新手小白常用的,编程工具,调试工具…等等,具体内容将于下面进行详细的说明
一、yum ——软件包管理工具,完成第三方工具软件的安装与卸载功能
查找:
list 查看所有工具
search [空格] 工具名
安装:
install [空格] 工具名(在具有root权限的情况下执行)
卸载:
remove [空格] 工具名 (在具有root权限的情况下执行)
二、vim ——编辑器,linux写代码的工具
模式切换:(返回普通模式:Esc)
vim filename 打开文件(文件不存在则创建) —默认处于普通模式
普通->插入
i,o,a,I,O ,A
共有六种不同的插入方式,具体实践大家可以自己试试,大小写功能是不相同的,我们常用的****是”i“的插入方式
**普通->低行:**——“/” ,”?“ 都可以,只是功能不同:w——保存 :q—— 退出 :wq—— 保存并退出 :q!——强制退出不保存/string——匹配字符串?string——查找字符串:%s——全文指定字符串替换:[num],[num]s/oldstring/newstring/g ——选定范围字符串替换
**其他->普通** Escdd ——剪切或删除光标所在行(按 P 即可粘贴)[num]dd 从光标所在行进行多行剪切或删除yy 复制[num]yy 从光标所在行进行多行复制u 撤销上一次操作Crtl+r 还原撤销
光标移动: 上下左右 hjkl Ctrl+f/b G/gg
全文对齐: gg=G
三、g++/gcc ——编译器,即将高级语言编译成为机器指令
默认链接方式:动态链接
编译过程:
预处理——展开所有代码(宏替换,头文件,)
gcc -E 文件名 (-o(用来生成一个预处理文件) 生成的文件名)(mian.i)
编译——语法语义检测,没有错误则将代码解释成汇编指令
gcc -S 文件名 -o…(mian.s)
gcc -g——生成debug调试程序
eg: gcc -g main.c -o mian
汇编——将汇编指令解释成二进制的机器指令
gcc -c 文件名 -o…(mian.o)
链接——将所有需要的二进制机器指令(其他的.o以及库文件)打包生成可执行程序
gccmian.o -o…(mian)
静态链接:
将库中的使用到的代码写入到可执行程序中
缺陷:生成的程序较大,在运行时存在重复冗余代码
优点:运行时不需要依赖库
动态链接:
在可执行程序种记录库中函数符号信息表,并没有把具体实现的指令写入可执行程序,而是在运行程序的时候去加载这个库
优点:生成的程序小,在内存中共享库
缺陷:运行时依赖库的存在
四、gdb ——调试器,调试程序运行过程
默认链接方式:动态链接
编译过程:
预处理——展开所有代码(宏替换,头文件,)
gcc -E 文件名 (-o(用来生成一个预处理文件) 生成的文件名)(mian.i)
编译——语法语义检测,没有错误则将代码解释成汇编指令
gcc -S 文件名 -o…(mian.s)
gcc -g——生成debug调试程序
eg: gcc -g main.c -o mian
汇编——将汇编指令解释成二进制的机器指令
gcc -c 文件名 -o…(mian.o)
链接——将所有需要的二进制机器指令(其他的.o以及库文件)打包生成可执行程序
gccmian.o -o…(mian)
静态链接:
将库中的使用到的代码写入到可执行程序种
缺陷:生成的程序较大,在运行时存在重复冗余代码
优点:运行时不需要依赖库
动态链接:
在可执行程序种记录库中函数符号信息表,并没有把具体实现的指令写入可执行程序,而是在运行程序的时候去加载这个库
优点:生成的程序小,在内存中共享库
缺陷:运行时依赖库的存在
gdb调试器——调试程序运行过程
调试程序的前提 ——这个程序是一个debug版本的程序
debug程序:
不进行代码优化,并且会加入调试信息
release程序:
会进行代码优化,提高程序运行效率(gcc默认生成release版本程序无法进行调试)
常见调试指令:开始调试:程序运行参数是gdb加载完成之后run/start的时候给予run ——直接运行到断点start ——逐步调试list [空格] 程序文件名:[num] ——查看指定文件程序,指定行附近代码n/next——下一行(后续可用回车代替)(不会进入函数内部,直接执行完函数)——逐过程s/step——下一行(会进入函数内部) ——逐语句until[空格]程序文件名:[num] ——运行到程序指定行b/break[空格]程序文件名:[num] ——给指定文件指定行打一个断点info[空格] break ——查看设置的断点break [空格] 函数名 —— 给函数打断点d/delete[空格] id(断点ID) ——删除断点print ——查看/设置变量数据watch [空格] 变量 ——给变量打一个监控断点,变量发生变化时触发断点continue ——从调试位置开始继续运行backtrace ——查看函数调用栈,快速找到程序崩溃位置
五、make/makefile ——项目的自动化构建工具
touch makefile —— 创建一个文本文件
一个普通文本文件,在其中编写项目的构建规则
编写规则:目标对象:依赖对象......[tab]为了生成目标对象所需要执行的指令预定义变量:$@ ——目标对象$^ ——所有依赖对象$< ——依赖对象中的第一个SRC=$(wildcard ./*.c) ——获取当前文件下所有以.c结尾的文件OBJ=$(patsubst %.c,%.o,$(SRC)) ——pastsubst对SRC中的内容进行后缀名字符串替换%.o:%.c ——通配符生成目标对象.PHONY ——声明为对象,与外部文件脱离关系的对象
实际操作就如同下面这个例子一样:
这是现在mktest文件中所存放文件
这是makefile基于上面的准则写好的文件内容
make
是makefile解释程序,在当前目录下找到名为makefile的文件逐行解释执行
解释执行规则:
make生成第一个目标对象之后就会退出
为了生成目标对象,递归查找依赖对象生成规则,生成依赖对象再去生成目标对象
六、git —— 项目的版本管理工具
将项目的每个节点版本保存起来,以便随时能够回滚还原
协同开发
操作:克隆远程仓库:git clone [ gitee仓库路径 ]添加修改记录:git add --all ./ 提交本地仓库:git commit -m "备注信息"同步远程仓库:git push origin master
总结
这篇文章主要是想帮助初入linux的萌新的一点,快速的笔记说明,只是我个人的一些笔记的汇总,如果有写的不清楚,或者不对的地方,希望可以得到大家的指正,emmm,这些还是希望大家可以多多练习,毕竟这个真的是熟能生巧,动手跟着操作肯定比干瞪眼的效果会好的更多,加油!!!大家一起共同进步!!!!冲!!!!