2015-10-17 80 views
2

我想編譯我的程序與自定義 gcc後,cmake生成的makefiles。我做了以下內容:如何強制cmake鏈接對自定義gcc庫

  1. 編譯GCC 5.2.0從源
  2. 設置CMake的變量CMAKE_CXX_COMPILER到路徑定製,讓我們說/home/user/pkgs/bin/g++
  3. 冉cmake的,它成功地完成了
  4. 冉做,它也成功地完成了

然而,當我試圖運行程序它顯示像誤差修改: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found

在我看來, ,這個問題是鏈接到/usr/lib的舊庫,而鏈接應該完成cutom gcc庫。

我該如何解決這個問題?

回答

1

該問題不是特定於CMake的。您可以通過GCC的所有自定義安裝,發佈新版本的libstdC++。

您可以通過添加-static-libstdc++您CMAKE_CXX_FLAGS更改LD_LIBRARY_PATH指向你的GCC安裝路徑

export "LD_LIBRARY_PATH=/home/user/pkgs/lib:$LD_LIBRARY_PATH" 

,或者你可以鏈接靜態與libstdC++。so.6,或者你可以改變你的目標將rpath包括/home/user/pkgs/lib(請參見cmake wiki on rpath) ,但是,只有在您編譯的機器上只運行該程序時,該功能纔有效。