在我的makefile,我添加参数连接标志作为一个变量BOOTLOAD
传递变量的Makefile
LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD)
如果我在makefile文件写的一切是BOOTLOAD = 0x3800
工作正常。
但我想从C代码传递这个变量,所以我试图将其定义为#define BOOTLOAD 0x3800
。但链接器找不到它。
如何从C文件中传递BOOTLOAD
?
在我的makefile,我添加参数连接标志作为一个变量BOOTLOAD
传递变量的Makefile
LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD)
如果我在makefile文件写的一切是BOOTLOAD = 0x3800
工作正常。
但我想从C代码传递这个变量,所以我试图将其定义为#define BOOTLOAD 0x3800
。但链接器找不到它。
如何从C文件中传递BOOTLOAD
?
而不是“通过”宏从C源文件(这是可能的,但不容易),你可以改为向预处理器定义宏与-D
选项编译时:
gcc -DBOOTLOAD=$(BOOTLOAD) -c source_file.c
我建议您检查GCC preprocessor command line option reference以获取有关-D
选件的更多信息。
它是能够特定的源文件中搜索到宏定义,然后生成文件变量设置为所提取的值,但它更容易,如上所示,以围绕做的其他方式。
看来你必须在你的makefile从源代码中的grep BOOTLOAD如下:
BOOTLOAD = $(shell grep '#\s*define\s\+BOOTLOAD' YOUR_SOURCE_FILE | awk 'print $3')
LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD)