gccでコンパイルされたC++アプリケーションを、実行可能ディレクトリに必要な.soファイルを入れて展開しようとしています。リンカーフラグ-Wl,-rpath=$ORIGIN
を追加して、プログラムがリンクされているライブラリをそのディレクトリにあるディレクトリで探すようにしました。これは、実行可能ファイルに直接リンクされているすべてのライブラリが見つかるまで動作します(lddでチェックされます)。しかし
、私は次のエラーを取得するアプリケーションを起動しよう:
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Available platform plugins are: linuxfb, minimal, offscreen, xcb.
Reinstalling the application may fix this problem.
プラグインは(実行ファイルのパスに対して)フォルダ./platforms
に配置されているプラットフォーム。 Qtによって明らかに読み込まれた他の共有オブジェクトファイルのうちの1つはlibqxcb.so
です。今、問題は、このファイルが再びlibQt5Gui.so
、libQt5Core.so
などに依存していることです。これらは私のアプリケーションパスにありますが、libqxcb.so
が何らかの形でそれらを見つけることができないと思われます。どのように私はこれを修正する可能性はありますか?
私は、アプリケーションを実行するには、次のスクリプトを使用している場合は、それが(注:Ct
は、実行可能ファイルの名前です):作品
#!/bin/sh
DIR="$(cd "$(dirname "$0")" && pwd)"
cd $DIR
LD_LIBRARY_PATH=LD_LIBRARY_PATH:. ./Ct
をしかし、私は、スクリプトを使用せずにこれを達成したいと思いますアプリケーションを実行します。
「ldd」であなたの「libqxcb.so」をチェックすると、見つからなかったライブラリに関する疑問に対する回答が得られます。 – Arseniy
質問を作成したときに私はすでに行いました。問題は、それが見つからない理由と、それをどのように修正できるかです(そのスクリプトでアプリケーションを開始することは別として)。 – user1488118