开发生产libc / libstdc ++不匹配[链接libc.so.6 / libstdc ++。so.6与旧版本]

时间:2016-08-12 14:27:01

标签: c++ gcc shared-libraries cross-compiling glibc

我在C ++上构建了一个exec,但是当我将它部署到部署机器时,我发现了以下错误:`

/lib64/libc.so.6: version GLIBC_2.14 not found /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.14 not found /usr/lib64/libstdc++.so.6: version CXXABI_1.3.5 not found

事实证明,因为部署机器是基于rhel的系统,具有较旧的libc(2.12)/ libstdc ++(3.4.13),而我的机器是具有最新内核和库的ubuntu。不幸的是我无法升级部署系统。

我尝试了一些常用的方法来处理这个问题,如静态链接(libc失败)和将我的库版本复制到集群(并使用LD_PRELOAD和-Wl, - rpath选项运行),但它没有我也在我的机器上安装了旧版本的gcc,但这也不起作用。

是否有某些方法可以使其工作(可能在我的本地计算机上创建目标代码,并在另一台计算机上链接它)。或者有没有办法在部署机器上编译代码而不复制源代码。 这可以用于从部署机器获取系统库的副本并尝试让gcc与它们链接吗? (任何问题,以及如何正确地做到这一点)

Compile with older libc (version `GLIBC_2.14' not found)Deploying Yesod to Heroku, can't build statically相关 和Build and run C++ code on different version of Linux and glibc

我知道通过虚拟机实现此目的的一种方法,但我想尽可能避免使用它。(HT Mat)

1 个答案:

答案 0 :(得分:0)

使用-static-libstdc++选项编译您的应用程序。