在我的makefile中,我将链接器标志的参数添加为变量BOOTLOAD
LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD)
如果我在makefile中写BOOTLOAD = 0x3800
,一切正常。
但是我想从C代码传递这个变量,所以我试着像#define BOOTLOAD 0x3800
那样定义它。但链接器找不到它。
我应该如何从C档传递BOOTLOAD
?
答案 0 :(得分:6)
而不是"传递"来自C源文件的宏(这可能但不容易),您可以在使用-D
选项进行编译时要求预处理器定义宏:
gcc -DBOOTLOAD=$(BOOTLOAD) -c source_file.c
我建议您查看GCC preprocessor command line option reference以获取有关-D
选项的更多信息。
可以将特定的源文件搜索到宏定义,然后将makefile变量设置为提取的值,但是反过来更容易实现,如图所示上方。
答案 1 :(得分:0)
似乎你必须从makefile中的源代码grep BOOTLOAD,如下所示:
ggtern(data = df,aes(x = c,y = a, z = b)) +
geom_interpolate_tern(aes(value=d,colour=..level..),bins=50) +
geom_point(aes(color=d),size=10) +
geom_text(aes(label=round(d,0)),size=3) +
theme_bw() +
theme(legend.position=c(0,1),
legend.justification=c(0,1)) +
scale_colour_gradient(low='green',high='red') +
labs( title = "Ternary filled contour plot", colour = "Value, V")