如何给以make工具构建的工程中加debug编译选项

发布时间 2023-05-28 09:46:20作者: zwlwf

问题描述

make可以像bash一样调用很多命令,debug选项属于编译器(以gcc为例),所以这个问题更准确的描述应该是:如何给make工程中gcc传递-g参数。
之所以还用上面的名字,是因为最初的诉求冲到脑子的就是上面的样子。

一个偷梁换柱的思路

首先我们给gcc弄个wrapper程序gcc_wrapper,在这个wrapper的gcc中调用真实的gcc,并加一些构建参数。简单得可以弄成如下的bash脚本

#!/usr/bin/bash
#gcc_wrapper
gcc -g $@

现在梁准备好了,接下来是怎么去换的问题。

一般Makefile工程中的编译器compiler都是可配置的,要么configure的时候读取CC系统变量,要么在Makefile开头指定CC变量,这两种情况我们通过配置这两变量来修改编译器为我们的gcc_wrapper

也有可能有极端情况,作者将gcc写死到了make中编译命令(个人测试程序经常会这么写)。这种情况,可以首先将ln -s gcc_wrapper gcc,建一个软链接,且gcc_wrapper中的gcc用真实gcc的绝对路径。然后通过配置bash中PATH变量,gcc_wrapper所在路径放在PATH前面,如此make的时候就会用到我们的gcc_wrapper.

最后有一点需要注意:chmod a+x gcc_wrapper.