我正在寻找一种直接从内存加载生成的目标代码的方法。
我知道如果我将它写入文件,我可以调用 dlopen 来动态加载其符号并链接它们。但是,考虑到它从内存中开始,写入磁盘,然后由 dlopen 重新加载到内存中,这似乎有点绕道。我想知道是否有某种方法可以动态链接内存中存在的目标代码。据我所知,可能有几种不同的方法可以做到这一点:
欺骗 dlopen 认为您的内存位置是一个文件,即使它永远不会离开内存。
找到其他一些系统调用来做我正在寻找的东西(我认为这不存在)。
找一些可以直接在内存中链接代码的动态链接库。显然,这有点难以搜索,因为“动态链接库”提供了有关如何动态链接库的信息,而不是有关执行动态链接任务的库的信息。
从链接器中抽象出一些 API,并在其代码库中创建一个新库。(显然这对我来说是最不理想的选择)。
那么其中哪些是可能的?可行的?你能指出我假设存在的任何事情吗?还有其他我什至没有想到的方法吗?