在cmake生成makefile之后,我尝试使用自定义 gcc编译我的程序。我做了以下事情:
CMAKE_CXX_COMPILER
设置为自定义构建的路径,让我们说/home/user/pkgs/bin/g++
。然而,当我试图运行程序时,它会显示错误:
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found
在我看来,问题在于链接到/usr/lib
中的旧库,而链接应该用于cutom gcc库。
我该如何解决这个问题?
答案 0 :(得分:1)
问题并非针对CMake。您可以使用GCC的所有自定义安装,它可以提供新版本的libstdc ++。
您可以将LD_LIBRARY_PATH更改为指向gcc安装路径
export "LD_LIBRARY_PATH=/home/user/pkgs/lib:$LD_LIBRARY_PATH"
或者您可以通过将-static-libstdc++
添加到CMAKE_CXX_FLAGS静态链接到libstdc ++。so.6,或者您可以更改目标的rpath以包含/home/user/pkgs/lib
(请参阅cmake wiki on rpath)
,但是这样仅在您编译的机器上运行程序时才有效。