曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 11818|回复: 0
打印 上一主题 下一主题

内核 Makefile 中的 $(Q) 变量

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2010-11-24 19:04:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
内核 Makefile 文件选择 Debian 5.06,内核为 2.6.26,其中从 238 行到 259 行的注释中知道,$(Q) 变量的作用是决定是否在执行命令时输出详细的命令信息。底下对其有定义:

ifeq ($(KBUILD_VERBOSE),1)
  quiet =
  Q =
else
   quiet=quiet_
   Q = @
endif

定义的意思是,如果 KBUILD_VERBOSE 为 1,则 quiet 和 Q 为空,即执行命令时会输出命令执行的详细信息;否则 quiet 为 quiet_ ,Q 为 @ 。在 Makefile 中,如果一个命令前使用了 @ 符号,那么在执行命令时将不输出命令的执行详细信息。
抛开内核 Makefile 文件的庞大,这里只依样画葫芦的做一下实验,下面是一个测试 Makefile :
KBUILD_VERBOSE := 1
ifeq ($(KBUILD_VERBOSE), 1)
  quiet =
  Q =
else
  quite = quiet_
  Q = @
endif
all:
        $(Q)mkdir -p /home/beyes/makefile_test/quite/test_quite

Make 一下:
beyes@debian:~/makefile_test/quite$ make
mkdir -p /home/beyes/makefile_test/quite/test_quite

由执行结果看到,Makefile 中的 mkdir 命令执行过程整个输了出来。
再改一下 Makefile 中的 KBUILD_VERBOSE := 1 为KBUILD_VERBOSE := 0,那么再次执行 make 时,已经看不见任何输出。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 19:58 , Processed in 0.062982 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表