32 位程序依赖于 64 位库

32 位程序依赖于 64 位库

当我输入时,ldd helloworld我得到这个作为依赖项之一:

libboost_system.so.1.55.0 => not found

但事实证明,这是一个 64 位库,而是helloworld一个 32 位程序。然后,我在尝试运行该应用程序时收到的输出错误是:

./sayhelloworld: error while loading shared libraries: libboost_system.so.1.55.0: cannot open shared object file: No such file or directory

我能做些什么?

谢谢大家

答案1

二进制程序需要为相同 CPU 架构编译的共享库,在本例中为 i386,即 Intel 的 32 位架构。在使用 amd64、AMD 和 Intel 的 64 位架构的 Ubuntu 安装中,除了“本机”架构外,您还可以安装后者。

准备

如果您还没有这样做,请启用“外部”架构并更新软件包存储库索引:

sudo dpkg --add-architecture i386
sudo apt update

软件包安装

libboost_system.so.1.55.0,所讨论的共享库包含在软件包中libboost-system1.55.0(另请参阅如何找到提供文件的包?:)。如果在软件包管理器中附加冒号 ( ) 和体系结构名称,则可以要求软件包管理器安装针对特定体系结构的软件包:

sudo apt install libboost-system1.55.0:i386

相关内容