将gcc-4.8.5配置为在centos6上包含GLIBCXX_3.4.20



大家好,我已经寻找这个问题的解决方案好几天了,但网上发布的方法都不适合我。基本上,我正在尝试在我的生产服务器(centos-release-6-8.el6.centos.12.3.x86_64)上安装NodeGit库。执行npm install会引发以下错误:

Error: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/app/node_modules/nodegit/build/Release/nodegit.node)
    at Error (native)
    at Object.Module._extensions..node (module.js:434:18)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/app/node_modules/nodegit/dist/nodegit.js:11:12)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
]
  killed: false,
  code: 1,
  signal: null,
  cmd: '/bin/sh -c node /home/app/node_modules/nodegit/dist/nodegit.js' }

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX给出:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

因此GLIBCXX_3.4.20缺失。运行gcc -v给出:

COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/packages/encap/gcc-4.8.5/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.5/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.8.5/configure --enable-languages=c,c++,fortran --enable-shared --disable-libstdcxx-pch --enable-lto --enable-libgomp --enable-__cxa_atexit --enable-tls --with-gmp --with-mpfr --with-mpc --with-libelf
Thread model: posix
gcc version 4.8.5 (GCC)

有些地方建议我按照这个安装gcc-4.9。但它根本不起作用,因为在生产服务器中,我必须通过主机管理工具(Roller)安装gcc,这很麻烦,我想避免这样做。

你们知道安装GLIBCXX_3.4.20的方法吗?

GLIBCXX_3.4.20已添加到GCC-4.9中(参考)。

有些地方建议我按照这个安装gcc-4.9。但它根本不起作用,因为在生产服务器中,我必须通过主机管理工具(Roller)安装gcc,这很麻烦,我想避免这样做。

不知何故,您必须将libstdc++.so.6GCC-4.9.x(或更高版本)获取到生产服务器上,并在二进制文件可以找到它的地方。

如果您不想使用Roller,请使用任何其他您喜欢的方式。

最新更新