首页 文章

开发 生产环境 libc / libstdc不匹配[链接libc.so.6 / libstdc .so.6与旧版本] [重复]

提问于
浏览
0

这个问题在这里已有答案:

我在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相关

我知道有一种方法可以通过VM实现这一点,但是如果可能的话我想避免它 . (HT Mat)

1 回答

  • 0

    使用 -static-libstdc++ 选项编译应用程序 .

相关问题