对于嵌入式系统,我需要在固定地址放置一些数据结构,以便单独的控制 CPU 可以在已知位置访问它们。我正在使用嵌入式目标的链接器脚本来完成此操作,并为控制 CPU 添加那些相同地址的#defines。
令我困扰的是,这些地址常量因此定义在两个地方,链接描述文件和头文件。我只想拥有一个。到目前为止,我想出的最佳解决方案是让 Makefile 在链接器脚本上运行 cpp,允许它 #include 相同的 header 。
有没有更好的方法来实现这一点?是否有一些鲜为人知的 ld 选项或链接器脚本的命名约定将自动通过 cpp 运行它?
最佳答案
这不是您正在寻找的解决方案,但一种选择是利用构建系统来配置这些值。创建一个 config.h.in 和一个作为模板的 target.ld.in,并让构建系统为您正在构建的目标生成一个具有正确定义的 config.h 和一个具有正确地址的 target.ld。
我们在嵌入式系统中使用 CMake,它支持这种东西。 GNU autoconf 也可以,但我个人从来没有真正喜欢过它。
关于linux - #defines 在链接描述文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/139373/