首页 > 其他分享 >如何给以make工具构建的工程中加debug编译选项

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

时间:2023-05-28 09:55:52浏览次数:36  
标签:gcc 中加 make wrapper 编译器 debug bash

问题描述

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.

标签:gcc,中加,make,wrapper,编译器,debug,bash
From: https://www.cnblogs.com/zwlwf/p/17437808.html

相关文章

  • CMake构建指南:如何提高C/C++项目的可维护性
    如果您是一位C/C++开发人员,那么您一定知道在编写和维护大型项目时所面临的挑战。这些项目通常包含大量的源代码、库和依赖项,需要耗费大量的时间和精力才能构建和维护。在这种情况下,使用自动化工具可以大大减轻您的负担,提高项目的可维护性。CMake就是这样一款工具,它可以自动化C/C+......
  • CMake构建指南:如何提高C/C++项目的可维护性
    如果您是一位C/C++开发人员,那么您一定知道在编写和维护大型项目时所面临的挑战。这些项目通常包含大量的源代码、库和依赖项,需要耗费大量的时间和精力才能构建和维护。在这种情况下,使用自动化工具可以大大减轻您的负担,提高项目的可维护性。CMake就是这样一款工具,它可以自动化C/C++......
  • Ubuntu 下创建cmake的qt工程,使用CTK widget模块(cmake 工程配置)
    一、先看 二、假设已经编译好ctk库,对cmakelists.txt进行设置(解决:找不到头文件、未定义啥的错误) 三、目录结构 ......
  • Tool-CMake-vscode-cmake-tools
    Tool-CMake-vscode-cmake-toolsmicrosoft/vscode-cmake-toolshttps://github.com/microsoft/vscode-cmake-tools/blob/HEAD/docs/cmake-settings.mdConfigureCMakeToolssettingsCMakeToolssupportsavarietyofsettingsthatcanbesetattheuser,orworkspa......
  • Qt 中将std::cout 重定向到 qDebug
    #include<QtCore>#include<iostream>voidcustomMessageHandler(QtMsgTypetype,constQMessageLogContext&context,constQString&msg){QByteArraylocalMsg=msg.toLocal8Bit();switch(type){caseQtDebugMsg:......
  • GATK最佳实践之数据预处理SnakeMake流程
    <生信交流与合作请关注公众~号@生信探索>写的数据预处理snakemake流程其实包括在每个单独的分析中比如种系遗传变异和肿瘤变异流程中,这里单独拿出来做演示用,因为数据预处理是通用的,在call变异之前需要处理好数据。数据预处理过程包括,从fastq文件去接头、比对到基因组、去除重复......
  • 01.GATK人种系变异最佳实践SnakeMake流程:WorkFlow简介
    <~生~信~交~流~与~合~作~请~关~注~公~众~号@生信探索>学习的第一个GATK找变异流程,人的种系变异的短序列变异,包括SNP和INDEL。写了一个SnakeMake分析流程,从fastq文件到最后的vep注释后的VCF文件,关于VCF的介绍可以参考上一篇推文基因序列变异信息VCF(VariantCallFormat)流程代......
  • CMake vs Makefile: 如何选择适合你的项目构建工具
    在软件开发中,构建(build)是一个非常重要的过程。我们需要将源代码转换为可执行文件或库文件。为了完成此过程,我们通常使用构建工具来自动化构建过程。CMake和Makefile都是用于构建和管理软件项目的工具。CMake是一个跨平台的构建工具,它可以自动生成Makefile,而Makefile是一个GNU工具,......
  • CMake vs Makefile: 如何选择适合你的项目构建工具
    在软件开发中,构建(build)是一个非常重要的过程。我们需要将源代码转换为可执行文件或库文件。为了完成此过程,我们通常使用构建工具来自动化构建过程。CMake和Makefile都是用于构建和管理软件项目的工具。CMake是一个跨平台的构建工具,它可以自动生成Makefile,而Makefile是一个GNU工具......
  • Django - makemigrations - No changes detected
    Django-makemigrations-Nochangesdetected回答1Tocreateinitialmigrationsforanapp,runmakemigrationsandspecifytheappname.Themigrationsfolderwillbecreated../manage.pymakemigrations<myapp>YourappmustbeincludedinINSTALLED......