Linux的编译器,调试器和项目的自动化构建工具

Linux的编译器,调试器和项目的自动化构建工具

1、Linux的编译器gcc&g++

代码必须编译成可执行程序才可以运行
gcc&g++完成四步操作
1、预处理(头文件展开和宏替换)
2、编译(生成汇编代码)
3、汇编(生成机器指令)
4、链接(生成可执行程序)

命令:

gcc [选项] 需要编译的文件 [选项] 生成的目标文件

功能:

进行程序的预处理,编译,汇编,链接操作

预处理:

gcc -E 需要预处理的文件 -o 生成的目标文件.i

1.主要包括宏替换,文件包含,条件编译,去掉注释
2、预处理处理的是#开头的代码行

编译:
命令:

gcc -S 需要预处理的文件 -o 生成的目标文件.s

1、检查错误
2、生成汇编代码

汇编:

gcc -c 需要预处理的文件 -o 生成的目标文件.o

1、将编译阶段生成的汇编代码转成目标文件
2、生成机器指令

链接:
命令:

gcc  需要预处理的文件 -o 生成的目标文件

生成可执行程序

gcc默认生成的二进制程序是动态链接的

gcc的选项参数及描述

选项描述
-E生成预处理.i文件
-S生成汇编代码.s文件
-c生成机器指令.o文件
-o生成可执行程序
-static使用静态链接
-g生成调试信息
-fPIC生成位置无关代码
-l指定头文件路径
-L指定链接库名称
-shared使用动态库链接
-O0不优化
-O1缺省参数,表示一级优化
-O2二级优化
-O3三级优化
-w不生成警告信息
-Wall生成所有警告信息

2、Linux的调试器gdb

程序的发布方式有release版本和debug版本
Linux下使用编译器gcc&g++编译出来的程序默认是release版本
要使用gdb调试器,就必须在编译的时候加上-g选项

gdb使用的操作和描述:

操作描述
list+行号显示调试程序的源代码,接着上次的位置往下10行
list+函数名称列出某个函数的代码
r或run运行程序
n或next单条执行
s或step进入函数调用
b或break+行号在某行打断点
b或break+函数名在某个函数开头设置断点
finish执行到当前函数返回
p或print打印表达式的值,通过表达式可以修改变量的值或者函数调用
p+变量打印变量的值
set var修改变量的值
c或continue从当前位置开始连续非单步执行
dekete breakpoints删除所有断点
delete breakpoints n删除编号为n的断点
disable breakpoints禁用所有断点
enable breakpoints启用断点
info breakpoints查看当前设置了哪些断点
display 变量名跟踪或查看一个变量
undisplay取消对先前变量的追踪
util+行号跳转到某行
bt或breaktrace查看各级函数调用及参数
i或nfo locals查看当前栈区的变量值
quit结束调试

3、Linux的项目自动化构建工具Makefile

make是一个命令,用来自动化编译Makefile文件中的指令。

example:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

符号描述
$<第一个依赖对象
$^所有依赖对象
$@目标对象

工作原理:

1、make会在当前目录下找Makefile文件;
2、make’将Makefile下的第一个文件作为目标文件
3、若是依赖对象不存在,则继续向下找生产依赖对象的文件,然后逐层递归向上编译
4、若是没找到,则直接报错退出
目标对象是否需要重新生成,是根据依赖对象的最后修改时间来决定的

项目的清理:

1、执行make clean指令
2、我们将需要clean的目标文件设置为伪目标,用.PHONY修饰,伪目标的特性就是,总是被执行
3、伪目标无论如何每次都要重新生成

4、Linux下git的使用

操作描述
git clone urlclone资源到本地
git add 文件将文件添加到刚下载好的路径下
git commit提交改动到本地
git push推送本地文件到GitHub服务器

GitHub配置免密提交

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值