2016-08-01 26 views
7

問題:CMakeの:共有ライブラリに静的のlibgccとのlibstdC++に対するリンク

私は私のUbuntu 16.04のインストールにCMakeのとGCC4.9を使用して共有ライブラリにリンクするglibcc/glibcの++問題を抱えています。

追加条件:共有ライブラリをロード

は(私はそれがコピー)Red Hatの生産環境OM問題を与え、それは違うlibstC++バージョン(:GLIBCXX_3_4_20が見つからないエラー)を使用するので、私は信じています。私はsudoの権利を持っていないし、マシンをアップグレードすることはできません。

set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") 

とagaing

set(CMAKE_SHARED_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") 

を使用してしかし、それは動作しません:私はthisブログから派生したよう

、このpost、私が使っ++のlibgccとlibgcをに対する静的リンクをリンクしようとしました。何の仕事は、このCMakeのスクリプトですん:リンカオプションではなくライブラリ...

私の知識-static-libgccのと-static-のlibstdcに

add_library(myLib SHARED ${SOURCE_FILES}) 
set(CMAKE_EXE_LINKER_FLAGS " -static") 
target_link_libraries(myLib -static-libgcc -static-libstdc++) 

これは、これを行うための間違った方法でなければならない、++です

質問: -libgccと-libstdC++を静的にリンクする方法を教えてください。

ありがとうございます!

答えて

7

はい、は、リンカーフラグまたはリンカーオプションを正しく設定する方法です。 target_link_libraries

ドキュメント:

Specify libraries or flags to use when linking a given target.

Item names starting with -, but not -l or -framework, are treated as linker flags.

https://cmake.org/cmake/help/v3.0/command/target_link_libraries.html(オリジナルでは強調しない)

+0

ありがとう!さて、私はマニュアルをよく読んでいたはずです...私はtarget_link_librariesという名前は少し混乱していると思います... –

関連する問題