将变量从C文件传递给makefile

Nas*_*asr 0 c makefile

在我的makefile中,我将链接器标志的参数添加为变量 BOOTLOAD

LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD) 
Run Code Online (Sandbox Code Playgroud)

如果我BOOTLOAD = 0x3800在makefile中写一切正常.

但我想从C代码传递这个变量,所以我试着定义它#define BOOTLOAD 0x3800.但链接器找不到它.

我应该如何BOOTLOAD从C文件传递?

Som*_*ude 6

而不是从C源文件"传递"宏(这可能但不容易),您可以要求预处理器在使用-D选项进行编译时定义宏:

gcc -DBOOTLOAD=$(BOOTLOAD) -c source_file.c
Run Code Online (Sandbox Code Playgroud)

我建议您检查GCC预处理器命令行选项参考,以获取有关该-D选项的更多信息.


可能的一个特定的源文件中搜索到的宏定义,然后一个makefile变量设置为提取的值,但它更容易,如上图所示,以围绕做它的其他方式.