我正在使用 devKitPro 专门为 Nintendo Wii 创建一个应用程序。我想通过提供加载通过 objcopy -O 二进制传递的代码的能力来使我的应用程序模块化。我的问题是,我希望模块能够使用加载到内存中的主 ELF 中的符号。我尝试了各种方法,但还没有想出任何解决方案。
我尝试使用 -Map,因为我认为它可以让我使用链接器映射,但这个想法失败了。
我也试过编译成共享库,但这对我不起作用,因为链接器提示“只读段带有动态重定位”。
我真的需要帮助,因为我既不在 Windows 也不在 Linux 环境中。
最佳答案
您可以考虑使用 libdl
来执行此操作,它专门用于在运行时按名称加载符号。使用 libdl
,您可以获得所有要作为初始化子例程的一部分调用的函数的句柄,然后在您的程序需要它们时使用它们。最重要的是,您不需要在编译时拥有要链接的库,因此您可以将其替换为任何定义了这些符号的 Sprite ,而无需重新编译。
关于c++ - 有没有办法从 ELF 中提取符号,并使用 LD 将另一个文件与先前 ELF 中定义的符号链接(symbolic link)在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23439643/