操作系统之:编译器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

1debug & 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:目标对象

             目标对象:

                                  执行命令

3makefile文件: 内置变量 & 自定义变量

批量注释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)

gdbmake/makefile学习心得

LinuxLinux环境基础开发工具的使用 ———(yumvimgcc&g++gdbmake/Makefile进度条 git)

玩转开发板之交叉编译器安装

操作系统之:编译器gdbmake/makefilegit 看完你就全会啦!

操作系统之:编译器gdbmake/makefilegit 看完你就全会啦!