【问题标题】:Running gcc 5.2 build on gcc 4.4.7 Red Hat 6.6在 gcc 4.4.7 Red Hat 6.6 上运行 gcc 5.2
【发布时间】:2019-07-09 23:46:27
【问题描述】:

我们使用 gcc 5.2 构建了一个 exe(g++ 和 --std=c++14,如果重要的话)。

我们当前的部署机器:
$ cat /etc/red*
Red Hat Enterprise Linux Server 6.6 版(圣地亚哥)

它有以下 libc:
$ /lib/libc-2.12.so
由 GNU CC 版本 4.4.7 20120313 (Red Hat 4.4.7-9) 编译。
于 2015-01-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

【问题讨论】:

  • 使用 gcc5.2 构建的新实例似乎工作正常,但仍然担心 gcc 4.4.7 库和 gcc 5.2 库的这种混合

标签: c++ gcc glibc


【解决方案1】:

用您自己的副本覆盖libstdc++.so.6 可能会出现问题,因为它是一个系统库,因此可以被其他系统库使用。这在实践中是否有效取决于您对libstdc++.so.6 版本的准备程度。

Red Hat Developer Toolset 的不同 GCC 版本部分避免了这个问题,因为它们使用混合链接模型,其中大部分系统 libstdc++.so.6 库仍在使用,并且较新的 C++ 版本所需的功能通过静态链接包含在内.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多