【问题标题】:AArch64 - GNU ld - multiple linker scripts (for kernel and userland)AArch64 - GNU ld - 多个链接器脚本(用于内核和用户空间)
【发布时间】:2021-01-24 13:44:37
【问题描述】:

我已经为 AArch64 启动了一个裸机应用程序。裸机应用程序应该实现一个简单的内核(用于内存/设备管理和异常处理)和一个用户空间,该用户空间可以通过printf() 进行系统调用以通过 UART 输出某些内容。目前我正在 EL1 研究内核。缩进是将内核和用户区放在一个 ELF 二进制文件中,因为我还没有实现文件系统驱动程序和 ELF 支持。

例如,内核应该驻留在地址0xC0000000,主应用程序(用户区)应该驻留在0x40000000。但我稍后会更改此地址。是否可以将两个链接器脚本传递给 GNU ld?我意识到我必须为内核和用户空间使用不同的部分。

或者换个问题:
我的缩进甚至可能吗?好的,这可能是一个通用问题,但目前在这里没有找到类似的问题。

【问题讨论】:

  • 我觉得单独编译和链接用户空间会更干净,更容易,使用objcopy -O binary获取裸机二进制文件,然后使用.incbin或类似方法将其嵌入内核。 ..
  • @Siguza 感谢您提供更简单的解决方案。我不知道.incbin

标签: ld elf arm64 bare-metal


【解决方案1】:

来自 LD 手册:https://man7.org/linux/man-pages/man1/ld.1.html,据说:

Multiple -T options accumulate.

像这样使用它:-T script1.ld -T script2.ld

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 2015-04-18
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多