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