当前位置: 首页 > news >正文

【Linux】【编译】编译调试过程中如何打印出实际的编译命令

  • 🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)
  • 🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd
  • 🌐系列专栏:Linux技术
  • 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!! 👉关注✨、点赞👍、收藏📂、评论。
  • 如需转载请参考转载须知!!

编译调试过程中如何打印出实际的编译命令

    • 引言
    • @
    • make选项
    • VERBOSE
    • KBUILD_VERBOSE
    • 利用shell -x
    • 小结

引言

  • 在Linux编译调试过程中,在分析参数过长(execvp: /bin/sh: Argument list too long)、宏不生效、头文件找不到、结构体字段对不上等问题时,经常需要确认实际的编译命令(gcc、ldd等)及相关参数,但makefile的编写维护人员,有可能通过某些手段将编译命令的打印做了控制。此时,就需要了解编译命令打印的控制机制以及一些操作技巧,以便更好的分析编译问题。

@

  • 默认会打印全的gcc命令:
%.o:%.c$(CC) $(CFLAGS) $(INC) -o $@ -c $<
  • 默认不会打印gcc命令:
%.o:%.c@$(CC) $(CFLAGS) $(INC) -o $@ -c $<

make选项

-n
--just-print
--dry-run
--recon
--debug=j 
# Print the recipe that would be executed, but do not execute it (except in certain
circumstances).
  • 上述这些选项,会导致make不管目标是否更新,把规则和连带规则下的命令打印出来,但不执行,这些参数对于我们调试makefile很有用处。

VERBOSE

  • make(V=0是默认值),是quiet编译模式。
  • make VERBOSE=1或make V=1是开启verbose选项,会打印详细命令。
  • 原则上可以打印详细命令,但至于是否可以达到目的,还得看具体makefile的编写情况。

KBUILD_VERBOSE

  • 官方文档:
  • Set the kbuild verbosity. Can be assigned same values as “V=…”.
  • See make help for the full list. Setting “V=…” takes precedence over
  • KBUILD_VERBOSE.
  • KBUILD_VERBOSE 定义在Linux/Makefile中,而make V=1会将V赋值给KBUILD_VERBOSE ,进而修改Q变量,Q变量会控制编译命令之前是否加@,进而达到控制编译命令是否输出的目的。
  • 毫无疑问,该变量仅仅影响内核、驱动等模块的编译。
  • ps:Linux-2.6.34\Makefile
ifeq ("$(origin V)", "command line")KBUILD_VERBOSE = $(V)
endif
ifndef KBUILD_VERBOSEKBUILD_VERBOSE = 0
endif
# Beautify output
# ---------------------------------------------------------------------------
#
# Normally, we echo the whole command before executing it. By making
# that echo $($(quiet)$(cmd)), we now have the possibility to set
# $(quiet) to choose other forms of output instead, e.g.
#
#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
#
# If $(quiet) is empty, the whole command will be printed.
# If it is set to "quiet_", only the short version will be printed. 
# If it is set to "silent_", nothing will be printed at all, since
# the variable $(silent_cmd_cc_o_c) doesn't exist.
#
# A simple variant is to prefix commands with $(Q) - that's useful
# for commands that shall be hidden in non-verbose mode.
#
#	$(Q)ln $@ :<
#
# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
# If KBUILD_VERBOSE equals 1 then the above command is displayed.ifeq ($(KBUILD_VERBOSE),1)quiet =Q =
elsequiet=quiet_Q = @
endif

利用shell -x

  • make最终借助shell来执行,通过shell -x,可打印更为详尽的命令;
make SHELL='sh -x'

小结

  • 每种方法都有一定的适应场合,同时还与具体makefile、编译框架等有关系,不一定就真的起作用。关键还是要对makefile的框架、make的机制以及具体模块编的译流程等比较熟悉,本文的手段对你才有意义。

如本文对你有些许帮助,欢迎大佬加关注、评论、点赞,有关必回关

相关文章:

【Linux】【编译】编译调试过程中如何打印出实际的编译命令

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;Linux技术&…...

linux安装jdk

step1 下载jdk 到下面的网站下载需要的jdk安装包版本。 Java Downloads | Oracle step2 复制到opt目录 其中user_name对应自己的home目录的用户文件夹 sudo cp /home/user_name//home/czh/Downloads/jdk-17_linux-x64_bin.tar.gz /opt/ step3 到opt目录解压安装包&#xf…...

迅为iTOP-3A5000龙芯开发板安装UOS操作系统

3A5000板卡采用全国产龙芯3A5000处理器&#xff0c;基于龙芯自主指令系统&#xff08;LoongArch&#xff09;&#xff0c;市面上龙芯3A5000主板价格都在上万元&#xff0c;可以说是非常贵了&#xff0c; 迅为全新推出了款千元内的iTOP-3A5000开发板,这款板卡各方面的配置也是第…...

Firefox 110, Chrome 110, Chromium 110 官网离线下载 (macOS, Linux, Windows)

Mozilla Firefox, Google Chrome, Chromium, Apple Safari 请访问原文链接&#xff1a;https://sysin.org/blog/chrome-firefox-download/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 天下只剩三种&#xff08;主流&am…...

如何使用ArcGIS转换坐标

1.概述大家都知道ArcGIS提供了坐标转换功能&#xff0c;在我们手里的数据坐标系千差万别&#xff0c;经常会遇到转换坐标的时候&#xff0c;那么是否可以用ArcGIS进行转换&#xff1f;答案是肯定的&#xff0c;但是转换的过程比较复杂&#xff0c;这里为大家介绍一下转换的方法…...

链表基本原理

链表基本原理1.链表1.1 基本原理1.2 链表大O记法表示2. 链表操作2.1 读取2.2 查找2.3 插入2.4 删除3.链表代码实现1.链表 1.1 基本原理 节点 组成链表的数据格子不是连续的。可以分布在内存的各个位置。这种不相邻的格子就叫结点。每个结点保存数据还保存着链表里的下一结点的…...

基于JAVA+SpringBoot+Vue+ElementUI中学化学实验室耗材管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 当前&#xff0c;中学…...

1.输入子系统学习-struct input_dev-2023.02

内核版本&#xff1a;4.4.194 平台相关&#xff1a;rk3399 目前主要是看的触摸屏的代码 目录 一、include/linux/input.h&#xff08;struct_input_dev&#xff09; 二、结构体的注释部分&#xff08;百度翻译&#xff09; 三、Documentation/input/event-codes.txt&…...

解决:PDFBox报的java.io.IOException: Missing root object specification in trailer

文章目录问题描述原因分析解决方案问题描述 使用pdfbox类库操作pdf文件时&#xff0c;遇到下面的报错信息&#xff1a; java.io.IOException: Missing root object specification in trailer PDFBox参考&#xff1a; https://pdfbox.apache.org/ Apache PDFBox 库是一个开源的…...

MAC OSX安装Python环境 + Visual Studio Code

MAC上开发python怎么能少得了python3环境呢&#xff0c;而安装python3环境的方式也有多种&#xff0c;这里仅选用并记录本人认为比较方便的方式 安装Homebrew Homebrew是macOS 缺失的软件包管理器&#xff0c; 使用它可以在MAC上安装很多没有预装的东西&#xff0c;详细说明可…...

音乐 APP 用户争夺战,火山引擎 VeDI 助力用户体验升级!

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;并进入官方交流群 国内数字音乐市场正在保持稳定增长。 根据华经产业研究院数据报告显示&#xff0c;2020 年数字音乐市场规模为 357.3 亿元&#xff0c;到 2022 年市场规模已增长至 482.7 …...

CAP和BASE理论

CAP理论CAP是 Consistency、Availability、Partition tolerance 三个词语的缩写&#xff0c;分别表示一致性、可用性、分区容忍性。它指出一个分布式计算系统不可能同时满足以下三点&#xff1a;• 一致性&#xff08;Consistency&#xff09; &#xff1a;等同于所有节点访问同…...

基于商品理解的成交能力和成交满意度优化在Lazada的实践

作者&#xff1a;马蕊 Lazada推荐算法团队 在Lazada各域推荐场景中&#xff0c;既有优质商品优质卖家不断涌现带来的机会&#xff0c;也有商品质量参差带来的问题。如何才能为用户提供更好的体验&#xff0c;对卖家变化行为进行正向激励呢&#xff1f;下面本文将为大家分享我们…...

idea推送镜像到desktop报错:Cannot run program “docker-credential-desktop“ 系统找不到指定的文件。

windows Docker 搭建仓库 打开docker desktop 。 打开windows cmd窗口或powershell窗口。 输入"docker run -d -p 5000:5000 --name test registry:2 "运行一个名字叫test的registry容器。 idea配置springboot项目的docker插件 在pom.xml中的plugins中加入下面代码…...

hive开窗函数

hive开窗函数 窗口函数 数据准备 1 jx 20 2 zx 24 3 yx 18 4 wz 10 5 yy 34 6 wy 25create table t (> id int,> name string,> age int> )> row format delimited fields terminated by ; load data inpath /data/data.txt into table t;ROW_NUMBER ROW_N…...

安全多方计算系列笔记1——前世今生

这一系列笔记参考了绿盟科技研究通讯的安全多方计算文章&#xff0c;及其他。 首先看定义&#xff1a;在不泄露参与方原始输入数据的前提下&#xff0c;允许分布式参与方合作计算任意函数&#xff0c;输出准确的计算结果。 起源 安全多方计算问题及解首先由姚期智&#xff08…...

16- 梯度提升分类树GBDT (梯度下降优化) (算法)

梯度提升算法 from sklearn.ensemble import GradientBoostingClassifier clf GradientBoostingClassifier(subsample0.8,learning_rate 0.005) clf.fit(X_train,y_train) 1、交叉熵 1.1、信息熵 构建好一颗树&#xff0c;数据变的有顺序了&#xff08;构建前&#xff0c…...

SpringCloud+Nacos+Gateway

SpringCloudNacosGatewaySpringBoot整合GatewayNacos一. 环境准备1. 版本环境2. 服务环境二. 实战1.创建用户服务2.创建订单服务3.创建网关服务4.测试三. 避坑指南问题1--503问题问题2--网关服务启动报错SpringBoot整合GatewayNacos 本篇文章只演示通过gateway网关服务访问其他…...

高通开发系列 - linux kernel内核升级msm-3.18升至msm-4.9(2)

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 返回高通开发系列 - 总目录 前面我们升级了msm-4.9内核系统正常启动了,文件系统也正常工作,但那是使用了老基线的文件系统,其yocto…...

Spring依赖注入与反转控制到底是个啥?

目录 1. 引言 2. 管中窥豹 3.1 Spring 依赖注入 3.2 Bean 的依赖注入方式有两种 4. 总结 1. 引言 此文目的是用通俗易懂的语言讲清楚什么是依赖注入与反转控制&#xff0c;在看了大量的博客文章后归纳总结&#xff0c;便于后续巩固&#xff01;我相信&#xff0c;大多数…...

Firefox用户福音:免破解!一键安装HackBar 2.1.3旧版本完整教程

Firefox用户福音&#xff1a;免破解&#xff01;一键安装HackBar 2.1.3旧版本完整教程 在安全测试领域&#xff0c;HackBar作为一款经典的渗透测试工具&#xff0c;长期受到开发者和安全研究人员的青睐。然而&#xff0c;随着版本的迭代更新&#xff0c;新版本开始引入许可证验…...

Umi-OCR插件终极指南:如何选择最适合你的文字识别方案

Umi-OCR插件终极指南&#xff1a;如何选择最适合你的文字识别方案 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins 还在为文档扫描、图片文字提取效率低下而烦恼吗&#xff1f;Umi-OCR插件库为你提供了全…...

LeagueAkari:基于LCU API的英雄联盟自动化工具集架构设计与实战应用

LeagueAkari&#xff1a;基于LCU API的英雄联盟自动化工具集架构设计与实战应用 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit L…...

智能工单管理系统 2026 怎么挑?五款热门平台对比,适配企业各类业务场景

工单智能化应用&#xff1a;帮您告别工单苦海 传统工单系统的痛点&#xff0c;本质是信息处理效率与用户体验的矛盾。随着AI 的发展&#xff0c;工单智能化应用的核心逻辑转变为&#xff0c;通过AI技术将“人找信息”转变为“信息找人”&#xff0c;甚至“预测需求”。 工单管…...

ViGEmBus虚拟手柄驱动全栈技术指南:从内核原理到游戏控制革新

ViGEmBus虚拟手柄驱动全栈技术指南&#xff1a;从内核原理到游戏控制革新 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 一、认知虚拟手柄技术&#xff1a;…...

美军“转正”美科技公司AI系统,专家解读

来源&#xff1a;环球时报【环球时报报道 记者 刘扬】据路透社等外媒近日报道&#xff0c;五角大楼将把美国科技公司Palantir的人工智能&#xff08;AI&#xff09;系统Maven列为“正式在编项目”&#xff0c;使美军多军种将该公司的相关技术用于军事领域。五角大楼强调&#x…...

OLED屏幕清屏函数全解析:从基础到局部刷新(附代码示例)

OLED屏幕清屏函数全解析&#xff1a;从基础到局部刷新&#xff08;附代码示例&#xff09; 第一次接触OLED开发时&#xff0c;最让我困惑的就是屏幕刷新机制。记得当时为了调试一个简单的数字显示功能&#xff0c;反复调用全屏刷新导致屏幕闪烁严重&#xff0c;用户体验极差。后…...

ChezScheme测试性能优化:从53分钟到8分钟的效率跃迁

ChezScheme测试性能优化&#xff1a;从53分钟到8分钟的效率跃迁 【免费下载链接】ChezScheme Chez Scheme 项目地址: https://gitcode.com/gh_mirrors/ch/ChezScheme 一、痛点分析&#xff1a;串行测试的性能瓶颈 识别测试效率问题 在软件开发迭代过程中&#xff0c;…...

RVC 技术指南:从问题解决到效率提升

RVC 技术指南&#xff1a;从问题解决到效率提升 【免费下载链接】rvc RVC is a Linux console UI for vSphere, built on the RbVmomi bindings to the vSphere API. 项目地址: https://gitcode.com/gh_mirrors/rvc/rvc 问题场景→核心原理→分步方案→进阶技巧 一、环…...

一种路径优化和速度优化算法实现(仿照百度Apollo方案),只提供代码,有相关的readme文...

一种路径优化和速度优化算法实现&#xff08;仿照百度Apollo方案&#xff09;&#xff0c;只提供代码&#xff0c;有相关的readme文件。 自动驾驶 &#xff0c;路径优化&#xff0c;速度优化&#xff0c;pnc。 的代码最近在折腾自动驾驶的路径规划模块&#xff0c;发现实际落地…...