linux - #defines 在链接描述文件中

标签 linux linker

对于嵌入式系统,我需要在固定地址放置一些数据结构,以便单独的控制 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/

相关文章:

c# - .NET 6 升级导致 Azure Function 上的 DinkToPdf 损坏

c++ - 在 NDK 的稳定 API 之外使用原生 Android 系统库

c++ - 创建一个简单的 'hello world' 并将其与 2 个预编译对象链接在一起

c++ - 将 .dll 链接到 Visual Studio 中的测试应用程序时出现错误 LNK1104 "invalid or corrupt file"

linux - 在 Linux 中使用过滤器对 txt 文件中的行进行分组以创建多个 txt 文件

android - Systrace 错误 - 分析切片表未显示在 HTML 页面上

linux - rsync 排除/包含奇怪的行为

android - 我如何使用摩托罗拉使 ADB 在 linux 上工作

mysql - XAMPP mysql.sock 丢失

c++ - 可以使用 cmake 解决对符号的 undefined reference