当我输入时,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