You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GNU Make 4.3默认规则问询:内置命令、变量及存储位置

GNU Make 内置规则与变量问题解答

1. 查看完整内置规则列表

使用make -p -f /dev/null命令即可打印所有内置规则和变量。其中:

  • -p 参数用于输出当前所有生效的规则、变量定义
  • -f /dev/null 指定加载空的Makefile,避免本地自定义Makefile干扰,只显示GNU Make自带的内置内容

执行该命令后,你会看到类似你期望的规则格式,比如:

%.o: %.c
        $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<

%.o: %.cpp
        $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<

2. 内置规则中的其他变量

除了你熟悉的CFLAGS(C编译选项)、CXXFLAGS(C++编译选项),内置规则常用的变量还有:

  • CPPFLAGS:C/C++预处理器选项,比如宏定义-Dxxx、头文件路径-Ixxx
  • LDFLAGS:链接器选项,比如库路径-Lxxx、链接模式参数
  • LDLIBS:链接时需要链接的库文件,比如-lm(数学库)、-lpthread(线程库)
  • TARGET_ARCH:针对目标架构的特殊编译选项
  • CC:默认C编译器(通常指向系统的cc,实际多为gcc)
  • CXX:默认C++编译器(通常指向g++)

这些变量会根据不同的内置规则组合使用,比如C程序的链接规则会是:

%: %.o
        $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@

3. 默认规则的存储位置

GNU Make的默认规则是直接编译在程序源码中的,并非存储在外部配置文件里。不过你可以通过以下方式修改或补充规则:

  • 在本地Makefile中自定义规则,覆盖内置规则
  • 设置MAKEFILES环境变量,指定全局配置文件,在所有Makefile执行前加载该文件中的规则

内容的提问来源于stack exchange,提问作者Eric Stdlib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:00:42