如何对自定义gcc库强制执行cmake链接

Doc*_*sha 6 c++ linux gcc cmake

在cmake生成makefile之后,我尝试使用自定义 gcc 编译程序。我已经完成以下工作:

  1. 从源代码编译了gcc 5.2.0
  2. CMAKE_CXX_COMPILER假设将cmake变量设置为定制路径/home/user/pkgs/bin/g++
  3. Ran cmake,成功完成
  4. 然使,它也成功完成

但是,当我尝试运行程序时,它显示如下错误信息: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found

在我看来,问题在于链接到中的旧库/usr/lib,而应该链接到cutom gcc库。

我怎样才能解决这个问题?

小智 2

该问题并非特定于 CMake。您可以在 GCC 的所有自定义安装中使用它,该安装附带了新版本的 libstdc++。

您可以更改 LD_LIBRARY_PATH 以指向您的 gcc 安装路径

export "LD_LIBRARY_PATH=/home/user/pkgs/lib:$LD_LIBRARY_PATH"
Run Code Online (Sandbox Code Playgroud)

或者您可以通过添加到 CMAKE_CXX_FLAGS 来静态链接到 libstdc++.so.6 -static-libstdc++,或者您可以更改目标的 rpath 以包含/home/user/pkgs/lib(请参阅rpath 上的 cmake wiki) ,但这仅在您仅在其所在计算机上运行该程序时才有效编译于.