我们使用gcc 5.2(如果重要的话,请使用g ++和--std = c ++ 14)构建一个exe。
我们当前的部署机器:
$ cat / etc / red *
红帽企业Linux服务器6.6版(圣地亚哥)
它具有以下libc:
$ /lib/libc-2.12.so
由GNU CC版本4.4.7 20120313(Red Hat 4.4.7-9)编译。
2015年1月19日在Linux 2.6.32系统上编译。
在运行此exe之前,我们确保其将使用在构建过程中使用的gcc5.2.0构建的各种依赖库。
但是,如下面的“ lsof -p”输出所示,仍然使用了某些库(基本上是下面几行中“ / lib64”下的所有内容),它们来自gcc 4.4.7构建。这可能是个问题吗?
NODE NAME
130 /lib64/ld-2.12.so
154 /lib64/libc-2.12.so
8296 /lib64/libdl-2.12.so
8294 /lib64/libpthread-2.12.so
1778 /lib64/libm-2.12.so
8315 /lib64/libz.so.1.2.3
218 /lib64/libnsl-2.12.so
5312 /lib64/librt-2.12.so
5663 /lib64/libnss_files-2.12.so
4199459 /home/gcc-5.2.0/runtime_libs/libgcc_s.so.1
4199412 /home/gcc-5.2.0/runtime_libs/libstdc++.so.6
4199453 /home/gcc-5.2.0/runtime_libs/libboost_regex.so.1.61.0
4199433 /home/gcc-5.2.0/runtime_libs/libboost_date_time.so.1.61.0
4199442 /home/gcc-5.2.0/runtime_libs/libboost_filesystem.so.1.61.0
4199427 /home/gcc-5.2.0/runtime_libs/libboost_system.so.1.61.0
4199476 /home/gcc-5.2.0/runtime_libs/libboost_thread.so.1.61.0
4199429 /home/gcc-5.2.0/runtime_libs/libxerces-c-3.0.so
4199407 /home/gcc-5.2.0/runtime_libs/libACE.so.6.2.0
答案 0 :(得分:0)
用您自己的副本覆盖libstdc++.so.6
可能会出现问题,因为它是一个系统库,因此可以被其他系统库使用。这在实践中是否有效取决于您对libstdc++.so.6
版本的准备程度。
Red Hat Developer Toolset的不同GCC版本部分避免了此问题,因为它们使用混合链接模型,其中系统libstdc++.so.6
库的大部分仍在使用,并且较新的C ++版本需要的功能是通过静态链接添加。