嵌入式课程拓展(三)

gcc -static的作用

静态链接库文件
static表示的是编译的时候禁止调用动态库,此时就是说完全编译出的东西是比较大的

预习gdb、make

Linux程序gdb调试步骤:

Gdb的功能:
l 设置断点
l 监视程序变量的值
l 程序的单步执行
l 显示、修改变量的值
l 显示、修改寄存器
l 查看程序的堆栈情况
l 远程调试
Gdb调试过程:
1、程序经过预处理后,即进入编译阶段,进入编译阶段,首先声明编译:
2、格式:gcc-o test test.c -g
3、进入编译:gdb test
4、显示需要编译调试的源程序:l(list)//list filename
5、设置断点:b(break)行号
6、查看设置的断点:info b
7、运行调试程序:run
8、跳到下一个断点:c(continue)
9、单步运行的话使用:n(next)/s(step into)跳到函数体 //区别在与:next执行函数体,而step不执行函数体
10、调试过程中查看某个变量的变化:print i (每次都要手动设置)//display i(设置一次一直尾随,直到用“undisplay 变量标号” 停止)
11、退出当前的调试使用finish 跳出函数
12、清楚断点 clear 行号
13、Delete 断点信息序号// 删除所有断点或设置的要删除的断点
14、退出调试 q
15、b num if i=20 设置断点的触发条件
16、condition num i==50 改变断点的触发条件
17、GDB中源代码查看命令
list /l 行号或函数名 //查看指定位置代码
list //显示程序第linenum行的周围的源程序
list //显示函数名为function的函数的源程序
list // 显示当前行后面的源程序
list filename:funtion //显示哪个文件中的哪个函数的源程序
eg: list src/fun1.c:fun1
list filename:linenum //哪个文件的哪一行周围的源程序
eg:list src/fun1.c:1

Make概述

Make 可自动决定一个大程序中哪些文件需要重新编译,并发布重新编译它们的命令。
因为C语言程序更具有代表性,所以我们的例子基于C语言程序,但Make并不是仅仅能够处理C语言程序,它可以处理那些编译器能够在Shell命令下运行的的各种语言的程序。事实上,GNU Make不仅仅限于程序,它可以适用于任何如果一些文件变化导致另外一些文件必须更新的任务。
如果要使用Make,必须先写一个称为Makefile的文件,该文件描述程序中各个文件之间的相互关系,并且提供每一个文件的更新命令。在一个程序中,可执行程序文件的更新依靠OBJ文件,而OBJ文件是由源文件编译得来的。
一旦合适的Makefile文件存在,每次更改一些源文件,在shell命令下简单的键入:
make
就能执行所有的必要的重新编译任务。Make程序根据Makefile文件中的数据和每个文件更改的时间戳决定哪些文件需要更新。对于这些需要更新的文件,Make基于Makefile文件发布命令进行更新,进行更新的方式由提供的命令行参数控制。

Makefile

当我们要对多个文件进行编译成一个可执行文件时,需要使用Makefile。它就像一个批次处理的编译脚本,可实现自动化编译,一旦写好,只需要一个make命令,整个过程就会自动编译。
1. Makefile的规则
Makefile是由规则来实现的,即Makefile文件内容的主体由很多规则构成,每一条规则都由三部分组成:
(1)目标:目标定格写,后面是冒号(冒号后面是依赖)
(2)依赖:依赖是用来产生目标的原材料。
(3)命令:命令前面一定是Tab,不能是顶格,也不能说多个空格。命令就是要生成那个目标需要做的动作。
格式
目标: 依赖
Tab键 命令
2. make执行流程
(1)查找当前目录下的Makefile文件;
(2)初始化Makefile文件中的变量;
(3)分析Makefile中的所有规则;
(4)为所有的目标文件创建依赖关系;
(5)根据依赖关系,决定哪些文件要重新生成;
(6)执行生成命令;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值