我目前有一个我在x86_64中编译的程序,它依赖于在x86_64中编译的相当多的库(因此重新编译它们都是一个大项目) . 我正在寻找运行i386 dylib,但每当我使用dlopen加载它时,我得到一个错误,说它不是为我的架构而构建的 . 有没有办法将i386 lib直接转换为x86_64(我没有这个的源代码)或在x86_64架构上运行它?
您无法在x86_64可执行文件中加载i386库 .
只有从i386中获取x86_64库的方法是为正确的目标重新编译它 . 如果您没有源代码,则无法执行此操作 .
您可以重新编译i386的所有代码并使用该库 .
您无法将32位(i386)库(dylib)加载到64位(x86_64)进程中,反之亦然 .
机器可以运行32位或64位进程;你不能做的是在一个进程中混合使用32位和64位代码 .
如果该库是不可替代的,您无法重新编译它,并且您确实需要该程序的其余部分为x86_64,您可以在单独的进程中运行它并使用某种形式的IPC来调用代码并传递结果 .但在很多情况下,重写库或用其他类似工作的东西替换它可能更容易 .
3 回答
您无法在x86_64可执行文件中加载i386库 .
只有从i386中获取x86_64库的方法是为正确的目标重新编译它 . 如果您没有源代码,则无法执行此操作 .
您可以重新编译i386的所有代码并使用该库 .
您无法将32位(i386)库(dylib)加载到64位(x86_64)进程中,反之亦然 .
机器可以运行32位或64位进程;你不能做的是在一个进程中混合使用32位和64位代码 .
如果该库是不可替代的,您无法重新编译它,并且您确实需要该程序的其余部分为x86_64,您可以在单独的进程中运行它并使用某种形式的IPC来调用代码并传递结果 .
但在很多情况下,重写库或用其他类似工作的东西替换它可能更容易 .