我在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)
答案 0 :(得分:0)
使用-static-libstdc++
选项编译您的应用程序。