gpt4 book ai didi

c++ - 链接描述文件条件包含

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:32 25 4
gpt4 key购买 nike

我正在将分散文件转换为链接器文件。现在的问题是 armlink 可以在链接时接受符号,例如 --predefine=-DSOME_VARIABLE 并且在分散文件中,其他头文件可以包含在 #include "someHeader.h 指令。有些文件根据定义的符号包含在分散文件中,例如

#ifdef INCLUDE_RANDOM_FILE 
randomFile (*)
#endif

在链接描述文件中,这些选项不可用。是否有解决此问题的方法。

最佳答案

有两个相当简单的选项。

  1. 使用编译器预处理器并使用输出。
  2. 反转你的逻辑。

在 GCC 或任何编译器中使用 C 预处理器。

 $(CC) $(DEFINES) -E -P -o output.lds -x c-header input.lds

此选项允许全方位的预处理器定义和条件包含。


invert 选项是为您需要的每个案例提供单独的主“lds”文件,然后包括公共(public)部分。

flash.lds

start = 0xf000000;
size = 0x100000;
include "common.lds"

ram.lds

start = 0x0;
size = 0x10000;
include "common.lds"

同样可以是生产调试变体。如果排列很低,这是相当容易的。否则,我会使用预处理。

bin-utils ld documentation还有一个很好的示例,其中包含一个 linkcmds.memory 文件。您必须在 Makefile 或构建过程中符号链接(symbolic link) 或复制 linkcmds.memory 文件。


通过使用 weak 符号和 stub 文件以及不需要条件的例程,摆脱条件通常非常容易。

关于c++ - 链接描述文件条件包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28029894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com