首页 文章

从不同的架构加载dylib

提问于
浏览
0

我目前有一个我在x86_64中编译的程序,它依赖于在x86_64中编译的相当多的库(因此重新编译它们都是一个大项目) . 我正在寻找运行i386 dylib,但每当我使用dlopen加载它时,我得到一个错误,说它不是为我的架构而构建的 . 有没有办法将i386 lib直接转换为x86_64(我没有这个的源代码)或在x86_64架构上运行它?

3 回答

  • 2

    您无法在x86_64可执行文件中加载i386库 .

    只有从i386中获取x86_64库的方法是为正确的目标重新编译它 . 如果您没有源代码,则无法执行此操作 .

    您可以重新编译i386的所有代码并使用该库 .

  • 2

    您无法将32位(i386)库(dylib)加载到64位(x86_64)进程中,反之亦然 .

    机器可以运行32位或64位进程;你不能做的是在一个进程中混合使用32位和64位代码 .

  • 3

    如果该库是不可替代的,您无法重新编译它,并且您确实需要该程序的其余部分为x86_64,您可以在单独的进程中运行它并使用某种形式的IPC来调用代码并传递结果 .
    但在很多情况下,重写库或用其他类似工作的东西替换它可能更容易 .

相关问题