2016-12-06 8 views
0

に「RUN」の実行にLD_PRELOADを追加すると、それは私がシステムコンパイラとしてgccの4.8を使用して、とgcc 6.2おりますので、明らかである私はGCC 6.2でCLionで私のテストアプリケーションをコンパイルするときCLion

/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found 

を出力私のホームフォルダにあり、コンパイルされたプログラムは私のシステムライブラリを使用しています。

私がコンパイルしたアプリケーションをコンソールで実行しているときに、これはうまく動作しているLD_PRELOADを使用することです。

質問:私はCLionで「ファイル名を指定して実行」をクリックすると、何をCLionにCMakeList.txtに入れ、そうならない - 私のコンパイルアプリは、単に「LD_PRELOAD =何か./myApp」の代わりに」として実行さ./ myApp "

答えて

0

まあ、助けてくれました。 CLionのプロジェクトのビルド構成に環境変数を追加。 enter image description here

0

私はGCC 6.2でCLionで私のテストアプリケーションをコンパイルすると、それは

を出力し、私は「私は私のテストアプリケーションを実行すると、」あなたが意味を推測します。これは、あなたのアプリが新しいバージョンのlibstdC++にリンクされているが、起動時に古いものしか見つけることができないために起こる。 私のコンパイルのアプリではなく の「LD_PRELOAD =何か./myApp」ちょうど」./myAppとして実行される - 私はCLionで「ファイル名を指定して実行」をクリックすると、CLionにCMakeList.txtに入れ、そうならない何

gcc -Wl,-rpath=/path/to/new/libstdc++ ... 
:あなたのどちらかが(それは6.2ののlibstdC++ではなく4.8のを指すように)修正LD_LIBRARY_PATHを使用してアプリケーションを実行するか、カスタムRPATHでビルドする必要がある」

関連する問題