C++ 在不同计算机上使用二进制文件时出现共享对象错误

C++ 在不同计算机上使用二进制文件时出现共享对象错误,c++,linker,compilation,portability,C++,Linker,Compilation,Portability,我怎样才能避免这种情况?我有一个非常简单的C++程序,它是在Ubuntu框上编译的。当我将它移到red hat并尝试执行它时,会出现如下错误: cannot find shared object stdlibc++5.so 商业软件如何解决这个问题,安装在用户机器上的stdlib将会有很大的不同。编译时是否需要使用某些标志?我认为您需要重新编译它,因为: 操作系统不同[Ubuntu和红帽] 图书馆的位置可能不同。也有机会(尽管非常危险) 分钟)该stdc++库根本不存在 在使用C/C++等编译

我怎样才能避免这种情况?我有一个非常简单的C++程序,它是在Ubuntu框上编译的。当我将它移到red hat并尝试执行它时,会出现如下错误:

cannot find shared object stdlibc++5.so

商业软件如何解决这个问题,安装在用户机器上的stdlib将会有很大的不同。编译时是否需要使用某些标志?

我认为您需要重新编译它,因为:

  • 操作系统不同[Ubuntu和红帽]
  • 图书馆的位置可能不同。也有机会(尽管非常危险) 分钟)该stdc++库根本不存在
  • 在使用C/C++等编译语言的商业软件中,应用程序是 部署在同一操作系统上(据我所知,包括开发和生产),通常, 图书馆的位置也是一致的

  • 请检查你是否能够编译你的C++代码(可能是hello World)并重新编译你的代码。据你所知 目标计算机可能未安装g++及其库。唯一的 真正的解决方案是静态链接标准C++库,使用
    -静态libstdc++
    选项

    商业软件必须提供多个二进制文件,它们与支持分布中找到的C和C++库的主流版本相关联。您可以静态链接,但这相当不雅观。