博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux工具 gcc makefile gdb
阅读量:6426 次
发布时间:2019-06-23

本文共 1218 字,大约阅读时间需要 4 分钟。

hot3.png

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

手动配置makefile文件

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

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

OBJ = test.c func.ctest: $(OBJ)	gcc -o $@ $^.PHONY: cleanclean:	rm test

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

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

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

.PHONY: bothboth: a b ca:	cd subdir1; makeb:	cd subdir2; makec:	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

你可能感兴趣的文章
JSON
查看>>
SAP发布wbservice,如果有权限管控的话,需要给这个webservice加权限
查看>>
16.Python网络爬虫之Scrapy框架(CrawlSpider)
查看>>
stm 常用头文件
查看>>
mac 删除文件夹里所有的.svn文件
查看>>
程序制作 代写程序 软件定制 代写Assignment 网络IT支持服务
查看>>
mysql 案例~select引起的性能问题
查看>>
直接读取图层
查看>>
springsecurity 源码解读 之 RememberMeAuthenticationFilter
查看>>
HTML5标准学习 - 编码
查看>>
JS 时间戳转星期几 AND js时间戳判断时间几天前
查看>>
UVa11426 最大公约数之和(正版)
查看>>
mime
查看>>
SQL练习之求解填字游戏
查看>>
DOM
查看>>
关于网上商城开发的随笔记录1
查看>>
UIApplication
查看>>
12:Web及MySQL服务异常监测案例
查看>>
hdu 3955 March
查看>>
数据库性能优化之冗余字段的作用
查看>>