【发布时间】: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 二进制文件有效。谢谢。