【发布时间】:2018-05-09 12:41:54
【问题描述】:
在 Centos 6.9 上,我正在构建 cmake 3.5.0。我已经安装了现有的 cmake 3.4.3。对于 3.5.0,我做了 ok,然后做了“sudo make install”。但它给了我:
/home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake)
/home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake)
make: *** [cmake_check_build_system] Error 1
但我在 $LD_LIBRARY_PATH 中的 /usr/lib64 之前有 /usr/local/lib64,而 /usr/local/lib64/libstdc++.so.6 有 GLIBC_3.4.15 和 GLIBC_3.5.21。
ckim@stph45:~/CARLA/carla/cmake-3.5.0] strings /usr/local/lib64/libstdc++.so.6 | grep GLIBC
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_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
可能是什么问题?
【问题讨论】:
-
gcc 或 ld 不在 /usr/local/lib64 中查找。这不是一个标准的搜索位置。只有 /usr/local/lib 是。链接到你没有编译的 libstdc++ 也是非常错误的。
-
哦,我现在想起来了。我知道我可以使用“gcc -v”来查看默认链接库路径。但是你知道 cmake 使用什么链接库路径吗? (我发现这个 make install 使用 cmake)
-
Cmake 本身根本不使用任何东西。
-
这很奇怪。我发现如果我只是运行'make install',它可以编译,但只是某些系统目录中的文件写入权限错误。所以我使用 -'fR' 选项对 /usr/local/doc、/usr/local/share、/usr/local/bin 执行了 'sudo chmod go+w'。然后“make install”完成,没有错误。
-
所以只有当我使用 root 权限时才会发生库链接错误。