是否存在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可以做的各种疯狂事情的一个很好的例子。 –