12

Ubuntu では、Eclipse に C++ アプリがあります。アプリケーションは正常にコンパイルされ、コマンド ラインからアプリを実行できます。

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

"Cannot open shared object file: No such file or directory"共有ライブラリでスローされます。

bashrc ファイルに LD_LIBRARY_PATH を設定し、実行構成とデバッグ構成の両方で LD_LIBRARY_PATH 環境変数を次のように設定しました。

/home/behlingb/Documents/api_libs/FileGDB_API/lib

Eclipse でこれを実行するために他に何が欠けていますか?



アップデート

このアプリケーションが必要とする共有オブジェクト ファイルは 1 つだけで、そのファイルはサード パーティの API ダウンロードからのものです。実行可能ファイルがあるディレクトリ内に共有オブジェクトを配置すると、Eclipse でデバッグされることがわかりました。プロジェクトごとにファイルをコピーする必要がないように、別のディレクトリを指定する方法はありますか?

4

5 に答える 5

20

Eclipse の Kepler バージョンを使用しています。

  1. Eclipse で [実行]、[デバッグ構成] の順にクリックします。
  2. [環境] タブをクリックします。
  3. 新規をクリックします
  4. LD_LIBRARY_PATH を追加し、その値をライブラリを含むディレクトリに設定します
  5. エクリプスを再起動する
于 2013-11-14T12:08:19.197 に答える
3

@zuafi の提案によると、ライブラリを grep して「場所を特定」する必要はありません。

代わりに、strace の出力をファイルに保存します。

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

次に、ファイルを開きます。

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

ヒットするまでそれらの行を下にスクロールします

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

これは、見つける前に、さまざまなパスで/real/path/to/some/library.so見つけるためのいくつかの試行があったことを意味します。library.soしかし、最終的にライブラリは で見つかりました/real/path/to/some/

これをコピーして Eclipse に貼り付けるだけです。

于 2014-04-10T19:58:07.067 に答える
3

straceutility (およびgrepfor openand/or呼び出し) を使用statして、smth を実行するために必要な .so ファイルのリストを取得し、次に使用locate(またはパッケージの中から検索) して、必要なライブラリの実際の配置を見つけることができます。

于 2013-01-21T22:40:19.347 に答える