2013-01-21 6 views
8

Ubuntuでは、EclipseにC++アプリケーションがあります。アプリケーションは正常にコンパイルされ、コマンドラインからアプリケーションを実行できます。共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません。 Eclipseでの実行またはデバッグ

しかし、私はそれをデバッグまたはEclipseでそれを実行しようとすると、エラー

"Cannot open shared object file: No such file or directory"が共有ライブラリにスローされます。私は私のbashrcファイルでLD_LIBRARY_PATHを設定しても実行構成とデバッグ構成の両方にLD_LIBRARY_PATH環境変数を設定している

へ:

/ホーム/ behlingb /ドキュメント/ api_libs/FileGDB_API/libに

これを実行するにはEclipse以外に何が欠けていますか?



UPDATE

あり、このアプリケーションが必要とする唯一の共有オブジェクトファイルは、そのファイルがサードパーティのAPIのダウンロードからです。私は、実行可能ファイルが存在するディレクトリの中に共有オブジェクトを置くと、Eclipseでデバッグすることに気付きました。私はすべてのプロジェクトのファイルをコピーする必要はありませんので、別のディレクトリを指定する方法はありますか?

+1

あなたは正しい設定で、実行コンフィギュレーションでLD_LIBRARY_PATHを設定していると思います。実行コンフィギュレーションを使用して実行していることを確認しましたか? LiClipseでは、大きな、緑色の丸い、右向きの白い矢印のほかに、少し、下向きの、灰色の矢印をクリックすると、使用する実行コンフィギュレーションを選択できます。 – BenB

+0

Eclipse CDT(neon.3)があまり「安定」でないことがわかりました。 Ctrl +矢印が機能しないことがあります。ウィンドウを閉じると修正されます。 LD_LIBRARY_PATHは、私が尋ねたものに追加されないことがあります。再起動すると修正されます。 – Hei

答えて

2

あなたが必要なの実際の配置を見つけるためにlocate(またはパッケージの中で見つける)を使用し、なめらかを実行するために必要なの.soファイルのリストを取得するにはstraceユーティリティ(その後、openおよび/またはstatコール用grep)を使用することができますlib

10

私は、Kepler版のEclipseを使用しています。実行上のEclipseのクリックで

  1. クリック
  2. [環境]タブに新しい
  3. でデバッグ構成
  4. クリックして、LD_LIBRARY_PATHを追加し、ライブラリー
  5. 再起動のEclipseに
  6. を含むディレクトリにその値を設定
1

これはEclipse Keplerで有効です(これまでのバージョンは見ていません)。 デバッガで共有ライブラリをロードできるようにするには、LD_LIBRARY_PATHを設定しようとすると失敗します。しかし、CDTプラグインは、ファイル名を指定して実行メニュー

この目的のために共有ライブラリリストを提供します - >デバッグの構成...>プロジェクト - - 設定ダイアログ

C/C++アプリケーションで、その後

>デバッガタブ - > [共有ライブラリタブ

The Kepler dialog for adding debug shared libraries

+0

これは本当に正解でなければならないようです。私は火星でそれを試したし、それは私のために動作するように見えない。 – Menace

2

@zuafiが提案するものによると、あなたはライブラリをgrepと `それらを見つけるために「検索する必要はありません。あなたは

open("/real/path/to/some/library.so", O_RDONLY|O_CLOEXEC) = 3 (any value here) 

これを打つまで

strace -o my_output_file.txt /path/to/my_executable_file 

は、ファイルを開いて、あなたはこれらの行を

open("https://stackoverflow.com/a/path/to/some/library.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 

スクロールを下に見ることができます:

は、代わりにファイルにstraceのの出力を保存します/real/path/to/some/library.soを見つける前に、library.soを見つけるいくつかの試行があったことを意味します異なるパス。しかし最後に図書館は/real/path/to/some/にあります。

これをコピーしてEclipseに貼り付けてください。

3

LD_LIBRARY_PATHを設定しても動作しない場合。 Eclipesを閉じて、コマンドターミナルから実行します。私はこれがうまく動作することができることが間違いなく見つかった。理由は不明ですが、おそらくEclipesの初期化と関係があります。

+0

ところで、私はEclipesのルナ版を使用しています – Northern

+0

これは、端末ソース〜/ .bashrcが起動時に存在し、このファイルに 'export LD_LIBRARY_PATH'があるためです。 – Efreeto

関連する問題

 関連する問題