0

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

4

3 回答 3

3

您不能在 x86_64 可执行文件中加载 i386 库。

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

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

于 2011-08-27T06:30:33.930 回答
2

您不能将 32 位 (i386) 库 (dylib) 加载到 64 位 (x86_64) 进程中,反之亦然。

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

于 2011-08-27T06:30:28.577 回答
2

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

于 2011-08-27T08:16:26.830 回答