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