在不同的机器上使用二进制时出现共享对象错

时间:2011-08-11 14:57:44

标签: c++ linker compilation portability

我该如何避免这种情况?我在ubuntu盒子上编译了一个非常简单的c ++程序。当我把它移到红帽并尝试执行它时,我得到一个类似的错误:

cannot find shared object stdlibc++5.so

商业软件是如何解决这个问题的,用户机器上安装的stdlib会发生很大变化。我编译时是否需要使用一些标志?

2 个答案:

答案 0 :(得分:2)

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

  1. 操作系统不同[Ubuntu和Red Hat]
  2. 图书馆的位置可能不同。也有机会(尽管非常 那个stdc ++库根本不存在。
  3. 在使用C / C ++等编译语言的商业软件中,应用程序是 部署在相同的操作系统(开发和生产......据我所知)和通常, 图书馆的位置也一致
  4. 因此,请检查您是否能够编译C ++代码(可能是hello world)并再次编译代码。

答案 1 :(得分:1)

可能有多种原因;所有你知道的, 目标机器可能没有安装g ++及其库。唯一的 真正的解决方案是静态链接标准C ++库,使用 -static-libstdc++选项。