是否存在GNU LD鏈接器命令語言的條件語句?鏈接器命令語言的條件語句LD
背景:我正在開發用於arm cortex m0 +的固件,它由bootloader和一個應用程序組成。兩者都在單獨的項目中進行編譯和閃存,但是我使用了一個帶有驅動程序,makefile和加載程序腳本的符號鏈接的框架,以便我可以爲每個應用程序重複使用這些應用程序,而無需爲每個應用程序複製這些文件。 目前我有兩個裝載文件,引導程序和應用程序(生成文件自動指定相應的一個),內存分配新建分配FY如下:
引導程序
MEMORY {
flash (rx) : ORIGIN = 0x00000000, LENGTH = 16K
ram (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K
}
應用
MEMORY {
flash (rx) : ORIGIN = 0x00004000, LENGTH = 112K
ram (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K
}
和makefile一樣,我想把它們合併成類似的東西(使用C表達式來闡明)
MEMORY {
#ifdef(bootloaderSymbol)
flash (rx) : ORIGIN = 0x00000000, LENGTH = 16K
#else
flash (rx) : ORIGIN = 0x00004000, LENGTH = 112K
#endif
ram (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K
}
檢查出一些Linux內核連接器腳本的。它們大量宏觀化,並且始終是GCC和Binutils可以做的各種瘋狂事情的一個很好的例子。 –