2015-09-07 67 views
0

在我的makefile,我添加參數連接標誌作爲一個變量BOOTLOAD傳遞變量的Makefile

LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD) 

如果我在makefile文件寫的一切是BOOTLOAD = 0x3800工作正常。

但我想從C代碼傳遞這個變量,所以我試圖將其定義爲#define BOOTLOAD 0x3800。但鏈接器找不到它。

如何從C文件中傳遞BOOTLOAD

回答

6

而不是「通過」宏從C源文件(這是可能的,但不容易),你可以改爲向預處理器定義宏與-D選項編譯時:

gcc -DBOOTLOAD=$(BOOTLOAD) -c source_file.c 

我建議您檢查GCC preprocessor command line option reference以獲取有關-D選件的更多信息。


能夠特定的源文件中搜索到宏定義,然後生成文件變量設置爲所提取的值,但它更容易,如上所示,以圍繞做的其他方式。

0

看來你必須在你的makefile從源代碼中的grep BOOTLOAD如下:

BOOTLOAD = $(shell grep '#\s*define\s\+BOOTLOAD' YOUR_SOURCE_FILE | awk 'print $3') 
LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD)