操作系统之:编译器gdbmake/makefilegit 看完你就全会啦!
Posted I am Supreme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统之:编译器gdbmake/makefilegit 看完你就全会啦!相关的知识,希望对你有一定的参考价值。
一、编译器:gcc-àc语言
一、编译器:g++===>c语言
g++====>c++
编译一个程序所需要的经历的四个过程
1、预处理
1.1 宏替换 1.2 头文集展开 1.3去注释 1.4条件编译:gcc / g++ -E[file] -o[file].i
2、编译
语法语义的检测
gcc -S[file] -o[file].s 将源代码转化为汇编代码
3、汇编
将汇编代码转化为机器(二进制)代码
gcc -c [file] -o [file].o 注意此时c是小写
4、链接 gcc [file].c -o [file]
用目标文件+库文件 生成可执行程序
静态链接:gcc/g++命令行中增加一个参数 -static
动态链接:默认就是动态链接的
区别:
静态链接编译出来的文件大于动态链接生成的文件
可通过file [文件名]查看
也可以通过ldd [文件]可以查看一个文件所依赖的库文件 如果后缀为.so 则为动态库
二、gdb
1、debug & release ==> -g 命令行选项
2、调试的范式:gbd binfile
3、调试的选项:
①l(list):查看文件内容
②r(run):让程序运行起来
③b [行号]:打断点
④i(info) b(breakpoints):查看所有断点信息
⑤num:断点序号 Type:类型 keep保持 Enb(y:断点生效,n断点失效)
⑥disable [序列号]使断点失效 enable[序列号]:使断点生效
⑦n(next):逐过程执行win(F10,不进入程序内部)
⑧s(step):逐语句调试win(F11,进入程序内部)
⑨p [变量名称]:打印变量的值,print
⑩bt ;查看调用函数栈帧
⑪where作用和bt一样
⑫ f PID 查看当前函数调用的栈帧
:
coredump文件:内核转储文件,保存的是进程在崩溃的一瞬间内存的映像。
三 、make & makefile
1、make & makefile的解释
1.1make是解释器 解释makefile文件,makefile是书写编译规则的文件
1.2make是解释makefile文件,可以自动化构建项目,自动化生成可执行程序
2、makefile文件书写的规则
2.1目标对象 & 依赖对象 & 编译命令
2.2make的解释makefile文件的规则
-
- make会在当前目录下找makefile或者Makefile的文件
- 永远只为生成第一个目标对象而服务
- 若目标对象相对于依赖对象而言,较新,则不生成
- make 在生成第一个目标对象的时候,如果依赖对象也需要后续生成,则先生成依赖对象之后,使用依赖对象生成目标对象
2.3伪目标
.PHONY:目标对象
目标对象:
执行命令
3、makefile文件: 内置变量 & 自定义变量
批量注释ctrl +v 选中注释的行(用j/k选中)按下I(shift+i)-à插入注释符 ---》esc
批量取消:ctrl +v 选中注释的行,或者列(用j/k/l/h选中) -àx
makefile内置对象/自定义对象
$^:代表所有依赖对象
$@:代表目标对象
四、git
下载远端到仓库:git clone
提交本地仓库:git add:标记文件,让git进行管理
git commit:提交到本地仓库
提交到远端仓库:git push origin master
从远端仓库更新到本地仓库:
git pull
以上是关于操作系统之:编译器gdbmake/makefilegit 看完你就全会啦!的主要内容,如果未能解决你的问题,请参考以下文章
Linux环境基础开发工具的使用(yumvimgccg++gdbmake/Makefile)
LinuxLinux环境基础开发工具的使用 ———(yumvimgcc&g++gdbmake/Makefile进度条 git)