Makefile构建规则(make recipe)中@$符号的含义是什么?
Makefile 语法符号解释
你给出的代码片段中不存在整体的@$语法,这两个是互相独立的Makefile规则语法标记,分开说明如下:
- 行首的
@
Make默认会在执行每一条构建命令前,先把命令本身打印到标准输出,加了@前缀的命令会关闭这个打印行为,仅输出命令执行过程中产生的日志,也就是常说的静默执行。 $前缀
这是Make的变量取值标记,$(变量名)是固定的变量引用语法,作用是把对应变量的定义值替换到当前位置。你代码里的$(OBJCOPY)就是引用提前定义的OBJCOPY变量(一般是交叉编译链的objcopy工具路径),$(BINARY)就是引用提前定义的输出文件前缀变量。
举个实际的展开示例,如果你的Makefile里提前定义了如下变量:
OBJCOPY = riscv64-unknown-elf-objcopy BINARY = bootloader
那你给出的规则实际执行时会被展开为:
riscv64-unknown-elf-objcopy -S --set-section-flags .bss=alloc,contents -O binary bootloader.elf bootloader.bin
作用是把elf格式的可执行文件转换为不带冗余信息的纯二进制bin文件。
内容的提问来源于stack exchange,提问作者potato
相关产品推荐
相关产品推荐

