文档章节

在 Makefile 里加入调试选项

sfyumi
 sfyumi
发布于 2014/06/04 21:38
字数 311
阅读 1586
收藏 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
针对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
408
0
深入理解软件包的配置、编译与安装【转】

从源代码安装过软件的朋友一定对 ./configure && make && make install 安装三步曲非常熟悉了。然而究竟这个过程中的每一步幕后都发生了些什么呢?本文将带领你一探究竟。深入理解这个过程将...

长平狐
2013/06/03
86
0
GNU/Linux 常用命令与工具备忘

(1)系统管理 df 查看磁盘使用情况 top 监控cpu,内存的使用情况 ssh 安全的远程shell scp 安全的远程copy程序 bash 功能很弱小的shell环境,不过很多时候离开不了它 more 查看文件 tail 查...

最美的回忆
2017/10/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Flask 开发填坑

插件的选择: flask-security 真的是个鸡肋啊。自带的页面,好丑。还不如用flask-login来做呢。

pearma
10分钟前
0
0
讲述下 :LVM逻辑卷管理遇到的问题

LVM学习逻辑卷管理创建逻辑卷遇到的问题 1 实验环境 系统 内核 发行版本 CentOS 2.6.32-754.2.1.el6.x86_64 CentOS release 6.10 (Final) 由于是最小化安装没有xfs命令,yum安装如下包支持此...

linuxprobe16
45分钟前
0
0
day95-20180922-英语流利阅读-待学习

Hey Jude 半个世纪传唱不衰的背后故事 毛西 2018-09-22 1.今日导读 2004 年,The Beatles 被《滚石》杂志选为“历史上最伟大的 50 位流行音乐家的第一位”。这四名来自英国利物浦的男孩不仅对...

飞鱼说编程
52分钟前
1
0
OSChina 周六乱弹 —— 放假前期焦虑症晚期

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享Matteo的单曲《Panama》: 《Panama》- Matteo 手机党少年们想听歌,请使劲儿戳(这里) @新垣吉衣OSC :我发现只要去有小朋友...

小小编辑
今天
179
10
wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部