使用地图文件进行链接,不需要对象文件

问题描述 投票:0回答:1

我想为资源非常有限的嵌入式设备(ESP8266)创建一个操作系统,它可以加载以下内容 ELF 文件作为程序或共享对象(共享对象是第二重要的)。

我想知道是否有可能将这个操作系统的任何程序链接到 map file 的OS?

例如我实现了 memcpy 并在OS中制作一个头文件,声明它为 extern然后当我要写程序时,加入头文件使其编译成功,并使链接器偷看地址。memcpy 从操作系统的地图文件中获取。

操作系统是非独立的,它的功能总是在一个固定的地址,但程序是独立的ELF文件。

linker operating-system embedded elf linker-scripts
1个回答
1
投票

这绝不是一个在嵌入式目标上运行ELF的完整解决方案,但对于在链接过程中提供已知地址的具体问题,GNU LD允许你为定义为extern的代码中的符号提供地址,通过添加一个 PROVIDE 语句或对链接器脚本进行简单的赋值。LD不会直接读取地图文件,但你可以解析地图文件,找到相关的地址,生成一个有相应符号提供的链接器脚本,并在编译ELF时使用该链接器脚本。提供和赋值功能的文档可以在以下网站找到 https:/sourceware.orgbinutilsdocsldAssignments.html。

© www.soinside.com 2019 - 2024. All rights reserved.