【问题标题】:Version of GCC required to build cmake 3.X.Y构建 cmake 3.X.Y 所需的 GCC 版本
【发布时间】:2017-08-29 12:34:31
【问题描述】:

我正在尝试在 GCC 4.9.2 上编译 cmake 版本 3.0.2,但我收到了错误消息

/home/DrNo/cmake-3.0.2/Bootstrap.cmk/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/DrNo/cmake-3.0.2/Bootstrap.cmk/cmake)
---------------------------------------------
Error when bootstrapping CMake:
Problem while running initial CMake

我查看了 libstdc++.so.6 中的 ABI 字符串(?),但找不到 GLIBCXX_3.4.15

$ 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

我尝试过 cmake 编译 3.0.0、3.0.1、3.0.2 和 3.7.2 版本,但都需要 GLIBCXX_3.4.15,所以看起来我必须在此升级我的 GCC 版本系统(CentOS),我不想这样做,因为我已经用 GCC 4.9.2 在另一个系统(带有预打包 cmake 3.0.2 的 Ubuntu)上构建了这个项目。

是否可以安装两个 GCC。一个更新的构建 cmake 和 GCC 4.9.2 来构建项目的其余部分。

【问题讨论】:

  • 不是一个完整的答案,但请注意 CMake 以包含自解压存档的 shell 脚本的形式提供二进制分发。 3.0.2 版本是here。该脚本采用--prefix= 选项,允许将其安装在您喜欢的任何地方。您没有必须从源代码编译 CMake。话虽如此,您的工具链似乎存在一些问题,因此安装可能也无法按预期工作。
  • @DevSolar 我担心与 CentOS 的兼容性。我试试看。
  • 你为什么会得到这么旧版本的cmake? /home/DrNo/cmake-3.0.2/Bootstrap.cmk/cmake 是 cmake 附带的二进制文件,还是在此过程中构建的?在最后一种情况下,问题是你已经有 2 个版本的 gcc...
  • @DevSolar Linux 二进制文件有效。谢谢。

标签: gcc cmake


【解决方案1】:

我希望你能解决这个问题,我只是在这里留下这个评论作为将来的参考:

gcc4.1.2 上编译 cmake 版本 3.10.0 时确实遇到了类似的问题。我查看了我的LD_LIBRARY_PATH,发现有一条来自以前的 gcc 版本的路径。

我只是通过setenv 将其设置为沿线gcc_4.1.2/linux50_64/lib64 的正确路径。我学到的绝妙技巧是使用setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}/your/path/here:,它基本上将您的路径附加到LD_PATH_LIBRARY 变量中的所有内容。

【讨论】:

    猜你喜欢
    • 2012-08-18
    • 2023-03-25
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多