2017-02-01 18 views
0

私はプロジェクトで作業しています。私はこれまで単純なエディタと自分のMakefileを使ってビルドしてきました。私はCLionに切り替えたいと思っています。実行可能ファイルを実行しているときにCLIONが共有ライブラリを見つけられない

this questionによれば、CMakeにあなたのMakefileを実行させることができます。だから私のCMake.txtは次のようになります。

cmake_minimum_required(VERSION 3.6) 
project(rekotrans_testbed_simulator) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

add_custom_target(rekotrans_testbed_simulator COMMAND make -C ${rekotrans_testbed_simulator_SOURCE_DIR} CLION_EXE_DIR=${PROJECT_BINARY_DIR}) 

それは罰金構築します。私はまた、作業ディレクトリを設定し、正しい実行可能ファイルを指しています。

私のプロジェクトでは、私はcppunit 1.13を使ってテストします。しかし、それは共有ライブラリを見つけることができません。

echo $LD_LIBRARY_PATH 

/usr/local/lib 

/usr/local/lib

/home/kunterbunt/dev/comnets/git-repository/rekotrans-testbed-simulator/rekotrans-testbed-simulator-tests: error while loading shared libraries: libcppunit-1.13.so.0: cannot open shared object file: No such file or directory 

LD_LIBRARY_PATHポイントは、ライブラリが含まれています

ls /usr/local/lib/ 

[email protected] libcppunit-1.13.so.0.0.2* libcppunit.a libcppunit.la* [email protected] pkgconfig/ 

lddはこれを示しています

ldd /home/kunterbunt/dev/comnets/git-repository/rekotrans-testbed-simulator/rekotrans-testbed-simulator-tests 

linux-vdso.so.1 (0x00007ffc257e8000) 
libboost_thread.so.1.63.0 => /usr/lib/libboost_thread.so.1.63.0 (0x00007f1c73254000) 
libboost_system.so.1.63.0 => /usr/lib/libboost_system.so.1.63.0 (0x00007f1c73050000) 
libboost_date_time.so.1.63.0 => /usr/lib/libboost_date_time.so.1.63.0 (0x00007f1c72e3f000) 
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f1c72c22000) 
libboost_program_options.so.1.63.0 => /usr/lib/libboost_program_options.so.1.63.0 (0x00007f1c729a4000) 
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f1c727a0000) 
libcppunit-1.13.so.0 => /usr/local/lib/libcppunit-1.13.so.0 (0x00007f1c72563000) 
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f1c721db000) 
libm.so.6 => /usr/lib/libm.so.6 (0x00007f1c71ed7000) 
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f1c71cc0000) 
libc.so.6 => /usr/lib/libc.so.6 (0x00007f1c71922000) 
librt.so.1 => /usr/lib/librt.so.1 (0x00007f1c7171a000) 
/lib64/ld-linux-x86-64.so.2 (0x00007f1c7347c000) 

なぜCLionはそれを見つけることができませんか?コンソールからバイナリを実行するとすべて動作します。

+0

'ldd 'の出力を表示できますか? –

+0

ldd出力を表示するように編集しました。 – kunterbunt

+0

私は、LD_LIBRARY_PATHがCLion用にプログラムとして設定されていないと思います。 * CLion内の端末*で 'echo $ LD_LIBRARY_PATH'とは何ですか? – oLen

答えて

0

oLenと正確に指摘されているように、CLionはGUI(私の場合はGnome)から起動したときに私のユーザーとして起動していないようです。私はそれが何を始めているか分かりませんが、LD_LIBRARY_PATH=/usr/local/lib/etc/profileに設定してリブートする(またはリソースを再利用する)ことで、動作します。つまり、CLionを実行しているユーザーの変数は設定されていません。

もう1つの方法はRun -> Edit Configurations -> (select your application) -> Environment variablesです。ここでは、手動でLD_LIBRARY_PATHを必要なものに設定できます。私の場合は/usr/local/libです。

1

How to set the environmental variable LD_LIBRARY_PATH in linuxを見てください:

あなたはLDの構成に、カスタムライブラリのパスを追加する場合は、CLionは自動的にライブラリを見つけるだろうし、あなたが実行構成に追加する必要はありません。 Ubuntuの/ Debianのオン

、単にあなたのライブラリへのパスが含まれる新しい.confファイル

sudo nano /etc/ld.so.conf.d/myLocalLibs.conf 

作成することにより、LDを構成することができます:/usr/local/libを。最後に、

sudo ldconfig 

と入力してLD構成を更新してください。

いくつかのシステム(Ubuntuの/ Debianの)上では、/ etc /プロファイルまたは/ etc /環境にLD_LIBRARY_PATHを設定できないことに注意してください:

のUbuntu 9.04粋ジャッカロープので、LD_LIBRARY_PATHが の$ HOMEに設定することはできません/.profile、/ etc/profile、/ etc/environmentファイルではありません。 /etc/ld.so.conf.d/*.conf設定ファイルは を使用する必要があります。詳細については、Launchpad bug #366728 を参照してください。 (help.ubuntu.com

関連する問題