#定义链接描述文件
时间:2020-03-06 14:46:57 来源:igfitidea点击:
对于嵌入式系统,我需要在固定地址处放置一些数据结构,以便单独的控制CPU可以在已知位置访问它们。我将链接器脚本用于嵌入式目标来完成此任务,并为控制CPU加上相同地址的#define。
令我困扰的是,这些地址常量因此在两个位置定义,即链接描述文件和头文件。我只想要一个。到目前为止,我想出的最好的解决方案是让Makefile在链接描述文件上运行cpp,允许它#include相同的头文件。
有没有更好的方法可以做到这一点? ld是否有一些鲜为人知的选项或者链接脚本的命名约定,它们会通过cpp自动运行?
解决方案
这并不是我们要找的解决方案,而是一种选择,就是利用构建系统来配置这些值。创建一个config.h.in和target.ld.in作为模板,并让构建系统生成具有正确定义的config.h和一个具有正确地址的target.ld来构建目标。
我们将CMake用于我们的嵌入式系统,它支持这种事情。 GNU autoconf也可以,但是我个人并不喜欢它。