c++ - 冲突的 C++ 库

标签 c++ centos virtual-machine rpm

我正在尝试在我的 VM 中安装 RPM,并且在 yum install 期间收到以下消息。

file /usr/lib64/libstdc++.so.6 from install of myPackage.x86_64 conflicts with file from package libstdc++-4.8.5-16.el7_4.2.x86_64
file /usr/lib64/libz.so.1 from install of myPackage.x86_64 conflicts with file from package zlib-1.2.7-17.el7.x86_64
file /usr/lib64/libgcc_s.so.1 from install of myPackage.x86_64 conflicts with file from package libgcc-4.8.5-16.el7_4.2.x86_64
file /usr/lib64/libgomp.so.1 from install of myPackage.x86_64 conflicts with file from package libgomp-4.8.5-16.el7_4.2.x86_64
file /usr/lib64/libgomp.so.1.0.0 from install of myPackage.x86_64 conflicts with file from package libgomp-4.8.5-16.el7_4.2.x86_64

我在 Centos7 中运行,并且我非常确定 libstdc++-4.8.5-16 即将到来,因为我从 Centos 存储库安装了 gdb(我正在安装一组预打包的 RPMS)。

有没有办法解决这些冲突?例如,有没有办法告诉 gdb 使用更新的 libstdc++ 库?

最佳答案

无论您尝试安装什么神秘包,都表现不佳。它试图安装一些共享库文件,根据权利,这些文件属于 CentOS 7 上的 libstdc++ 包。由于这种不当行为,Yum 正确地拒绝了神秘包。

您应该与包作者联系并告知他们他们的包不符合质量准则。如果他们正在编写的软件绝对需要比该环境中正式发布的更新版本的 libstdc++,那么他们可以:

  • Use devtoolset , 或
  • statically link the runtime , 或
  • package the newer shared library 但要将它安装在隔离的地方,在一个只会被神秘软件使用的位置。它绝不能接管平台自己的包,除非您希望它导致奇怪的运行时行为,因为系统上的所有其他 C++ 应用程序突然与 GCC 运行时库的某个神秘的更新版本链接。

如果不需要不同的共享库版本,那么作者应该:

  • 首先针对官方分发的库进行构建,并且
  • 在他们的 RPM 的 .spec 文件中表示先决条件……例如libstdc++ & libgomp

关于c++ - 冲突的 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49266697/

相关文章:

c++ - 查明 DirectInput 设备是否支持 XInput(使用 mingw/gcc)

c++ - Mingw 和 Boost::Log:构建简单示例失败

hadoop - 我的主机环境如何与我的 VM 交互? Hadoop/HortonWorks

linux - 同一服务器上多个 NIC 上的多个 IP 配置

sql-server - 从 Azure 虚拟机访问自行安装的 SQL Server 实例

node.js - 使用 VM 执行不受信任的代码时 NodeJS 内存泄漏

c++ - 如何在另一个函数中使用一个函数?

c++ - 避免指针算术,修复clang整齐的错误

CentOS/RHEL 5 的单声道 2.10.5

mongodb - 如何在 hostgator VPS 中安装 mongodb 扩展?