文档章节

在 Makefile 里加入调试选项

sfyumi
 sfyumi
发布于 2014/06/04 21:38
字数 311
阅读 1791
收藏 2

gcc 编译选项

-c            Compile and assemble, but do not link
-o <file>     Place the output into <file>
-g            Generate debug information in default format

简单的 Makefile 一般只用到前两项 gcc 选项,如果需要调试程序的话就用到第三个调试选项了。

一个简单的 Makefile示例

此工程由三个文件组成:

printHello.h
printHello.c
main.c

printHello.h

void printHello();

printHello.c

#include <stdio.h>                                 
void printHello(){
    printf("Hello World!\n");
}

main.c

#include "printHello.h"
int main() {
    printHello();
    return 0;
}

Makefile(带调试选项)

hello : main.o printHello.o
    cc -o hello main.o printHello.o

main.o : main.c printHello.h
    cc -c -g main.c

printHello.o : printHello.c
    cc -c -g printHello.c

clean : 
    rm hello main.o printHello.o


扩展知识:

gcc编译过程分为四步

预编译过程:处理宏定义和include,并做语法检查。

编译过程:生成汇编代码。

汇编过程:生成中间目标代码。(-c)

连接过程:生成可执行代码。(-o)

关于 Makefile,可以看一下陈皓的跟我一起写 Makefile 系列文章

GDB 调试也可以看一看陈皓的用 GDB 调试程序系列文章

© 著作权归作者所有

共有 人打赏支持
sfyumi
粉丝 4
博文 12
码字总数 2324
作品 0
海淀
程序员
私信 提问
Linux内核模块LKM编译-自制Makefile模板

前段时间对内核的模块重新做了研究,对内核模块的编译流程也作了一定的了解,比起5年前有更深入的认识。 根据LDD3的内核模块makefile和原理说明,我根据自己的需要做了适当的修改使得这个Mak...

nothingfinal
2012/06/13
0
0
C++(qt)游戏实战项目:坦克大战(四)

屏幕上光有地图也不行,还需要我们的坦克加入其中 新建tank.h和tank.cpp tank.h里加入 tank.cpp main.h结构体Glo中加入选项Tank *player. mainwindow.h里加入 mainwindow.cpp构造函数里加入 ...

qq_26046771
2017/06/03
0
0
centos下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)

在平时部署过程中,容易忽略对centos下安装mysql数据库的字符集编码修改,因在windows版本安装过程中会有一项选择字符集选项。而针对cnetos下容易忽略字符集设定,偶尔会造成部分字符乱码。相...

amosguo
2017/01/05
1
0
针对Web服务器总体优化

一、文件系统 在fstab里加入noatime,如 #cat /etc/fstab /dev/sda1 /home ext3 noatime,defaults 1 2 reboot或者重新mount生效 二、Tcp优化 在/etc/sysctl.conf里加入 net.ipv4.netfilter.i......

范堡
2009/05/06
418
0
Eclipse中使用自己的makefile管理工程

我用的环境: (1)系统: Ubuntu 11.04 (2)Eclipse + CDT 1. 在建立工程的时候选择makefile工程。 2.将makefile文件和你写好的工程文件(源文件和头文件)导入到刚刚创建的工程中。 3. 如...

苗永超
2014/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义线程池

自定义线程工厂: public class CustomThreadFactory implements ThreadFactory { private static final Logger LOGGER = LoggerFactory.getLogger(CustomThreadFactory.class); pu......

hensemlee
24分钟前
1
0
【剑指offer纪念版】-- 面试题目录

2.实现Singleton模式 3.二维数组中的查找 4.替换空格 5.从尾到头打印链表 6.重建二叉树 7.用两个栈实现队列 8.旋转数组的最小数字 9.斐波那契数列 【剑指offer纪念版】--9 斐波那契数列 10.二...

细节探索者
37分钟前
1
0
记一次oom内核优化记录:vm.lower_zone_protection

情景 最近gitlab服务会偶发性500,当前机器部署了gitlab、nfs等服务,经过排查发现是nfsd引发oom,导致系统运行不畅。处理过程如下: 事故现场 开发在使用gitlab的时候发现,偶发性的出现500...

阿dai
今天
4
0
Spring Batch JSON 支持

Spring Batch 4.1 开始能够支持 JSON 格式了。这个发布介绍了一个新的数据读(item reader)能够读取一个 JSON 资源,这个资源按照下面的格式: [  {    "isin": "123",    ...

honeymose
今天
0
0
浏览器缓存

HTTP缓存类型 200 from cache:直接从本地缓存获取响应,可细分为from disk cache, from memory cache 304 Not Modified:协商缓存,本地未命中发送校验数据到服务端,如果服务端数据没有改变,则读...

关元
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部