Linux工具 gcc makefile gdb

gcc GNU下的编译链接工具套组

源文件为 test.c 一个完整的编译链接生成test文件的过程如下

gcc -E -o test.i test.c # 预处理 .c->.i

gcc -S -o test.S test.i # 编译 .i->.S

gcc -c -o test test.S   # 汇编链接 .S->.o

其他参数

    -O[0|1|2|3] 优化等级

    -L DIR 链接目录

    -l FILE链接文件 不需要加空格

    -w 禁止所有警告

    -Wall 显示所有警告

 

makefile 自动化编译链接工具

make 自动检索makefile|Makefile|GNUmakefile文件来自动化编译链接

    -f 指定makefile的文件名

变量格式

OBJ = FILENAME|OTHER?

特殊变量

$@ 生成的目标文件 $^ 被依赖文件 $< 第一个被依赖文件

.PHONY: 伪目标文件列表 防止文件名与标签冲突

一个例子

目录结构如下

代码如下

/* config.h */
#define TEST 404
/* func.c */
#include <stdio.h>
#include "config.h"
void func() {
	printf("#define TEST is %d\n", TEST);
}
/* test.c */
#include <stdio.h>
int main() {
	printf("hello world\n");
	return 0;
}

手动配置makefile文件

​
test: test.c func.c
	gcc -o test test.c func.c
clean:
	rm test

利用特殊变量简写 并使用.PHONY防止文件名冲突

OBJ = test.c func.c

test: $(OBJ)
	gcc -o $@ $^

.PHONY: clean

clean:
	rm test

执行make命令 自动编译链接生成可执行文件

执行make clean命令 删除编译链接产生的文件

当有多级子目录时可使用makefile的嵌套 例子如下

.PHONY: both
both: a b c
a:
	cd subdir1; make
b:
	cd subdir2; make
c:
	cd subdir3; make

也可以下载一些自动化生成makefile的工具来生成makefile

最后生成的文件与下载安装的源码包文件非常相似

 

gdb 调试工具

编译时使用gcc -g 选项才能使用gdb调试

gdb调试交互式命令

    l 显示源代码

    r 运行

    c 继续

    b LINE 在指定行号设置断点

    bt 显示调用栈

    s 单歩执行[进入函数]

    n 单歩执行[不进入函数]

    p VAR 打印变量的值

 

转载于:https://my.oschina.net/nichijou/blog/742456

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值