'make install'compains libstdc ++。so.6没有GLIBCXX_3.4.15但是我在LD_LIBRARY_PATH中有libstdc ++。so.6文件

时间:2018-05-09 12:41:54

标签: gcc cmake linker glibc

在Centos 6.9上,我正在构建cmake 3.5.0。我已经安装了cmake 3.4.3。对于3.5.0,我确实没问题,然后做了'sudo make install'。但它给了我:

-primary

但是我在$ LD_LIBRARY_PATH中的/ usr / lib64之前有/ usr / local / lib64,而/usr/local/lib64/libstdc++.so.6有GLIBC_3.4.15和GLIBC_3.5.21。

/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

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

  

但是在$ LD_LIBRARY_PATH中/ usr / lib64之前我有/ usr / local / lib64

当您在sudo下运行时,GLIBC将忽略LD_LIBRARY_PATH并仅使用系统路径来搜索库。

如果GLIBC没有这样做,您可以通过将setuid指向您自己的LD_LIBRARY_PATH来轻松地破坏任何libc.so.6计划。

解决方案:

  1. 更好:不要使用LD_LIBRARY_PATH。而是使用适当的-rpath=链接器选项编译程序,以便它们正常工作。

  2. 更糟:sudo -s。 现在以您想要的任何方式设置LD_LIBRARY_PATH,然后运行make install