2

プロジェクトディレクトリ内に作成した(「共有」)フォルダーに共有ライブラリ(Ubuntu)を含む製品を出荷する必要があります。つまり、、、などにない共有ライブラリです。ファイル内、つまり/usr/lib/usr/local/lib.pro

LIBS += -Lshared/gsl -lgsl -lgsl_cblas

注意:実行ファイルは「共有」フォルダと同じディレクトリにあります。QtCreator からデバッグ モードでプログラムを起動すると、すべてが機能します。さらに、「共有」のライブラリを削除または名前変更すると、プログラムの起動に失敗します。また、アプリがこれらのライブラリを他の場所で見つけられないことも確認しました。しかし、コマンドラインから起動すると、

共有ライブラリの読み込み中にエラーが発生しました: libgslcblas.so.0: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

どうしたの?

編集:解決策は、コメントで開発されたように、以下のライオンベストのバリエーションです。何らかの理由で、私のプラットフォームではqmake/QMAKE_FLAGSはリンカー オプションの特定の形式のみを許可し、人々が使用した他のインスタンスについてグーグルで検索したものは許可しないことがわかりましたQMAKE_FLAGS。すなわち、

QMAKE_FLAGS += "-Wl,-rpath,\'\$$ORIGIN/shared/gsl\'"
QMAKE_LFLAGS_RPATH=

具体的には、パーサー (またはリンカー) が を受け入れないという問題がありました-rpath=...。Ubuntu 12.04、gcc 4.6.3、Qt 4.8.0、QtCreator 2.4.1「Qt 4.7.4 ベース」。この経験が他の誰かの同じフラストレーションを救うことができることを願っています.

4

1 に答える 1

3

環境変数を使用してプログラムを開始するLD_LIBRARY_PATH=shared/gslか、リンカー設定に RPATH を追加します。

LIBS += -Wl,-rpath=shared/gsl

アプリケーションのショートカットを作成する場合、ほとんどのディストリビューション (Gnome、KDE、LXDE、および XFCE ベース) は .desktop ファイルを使用します。QtCreator はおそらくあなたのためにそれを生成しました。これを編集または生成し、インストール時に $HOME/.local/applications または /usr/share/applications/ に配置する必要があります。デスクトップ ファイルでは、次のように環境変数と開始ディレクトリを追加できます。

Exec=/usr/bin/env LD_LIBRARY_PATH=/<path_to_libs>/ /<path>/app -extra_options

特定のディレクトリでアプリケーションを実行する必要がある場合は、次の行を追加します。

Path=/<path_to_your_application_working_dir>

パス内で ${} を使用できます。

于 2012-07-26T19:48:54.120 に答える