2

ここで次の問題があります。Qt でマルチプラットフォーム (Linux/Windows) アプリケーションを作成しています。

問題は Linux にあります。Qt ライブラリを取り除くために (そして 1 つの大きな実行可能ファイルを作成するために)、Qt を静的にコンパイルします。以下は構成行です。

./configure -qt-sql-mysql -static -prefix ~/qt-4.6.3-static -platform linux-g++ -I /usr/include/mysql -opensource -webkit

それほど重要ではないパラメータもあります。4.7 は Webkit の静的リンクをサポートしていないため、qt 4.6.3 を使用します。Webkit はアプリケーションのヘルプ システムに使用されます。現在、アプリケーションは MySql も使用しており、QT に mysql を処理させたいので、(qt-sql-mysql) にリンクするように指示します。主な問題は、アプリケーションを配布するときに発生します。

今のところ、私はCentOS 6で開発していますが、明らかにCentOS 6には独自のMySQLライブラリ(16)が付属しており、バージョン18のmysqlライブラリを含むLinux Mint 13ボックスにアプリケーションを移動すると、アプリはもう起動しません。おなじみのエラー:

./ddm: error while loading shared libraries: libmysqlclient_r.so.16: cannot open shared object file

(そして、はい、libmysqlclient-dev をインストールしました)

ここに私のジレンマがあります。プラットフォームごとに個別にインストール パッケージをビルドする手間をかけずに、できるだけ多くの Linux ユーザーがアプリケーションを利用できるようにしたいのです。

ここで質問があります: libmysql に静的にリンクするように Qt をビルドする方法を知っていますか? 行を取り除きたい:

$ ldd ./ddm | grep mysql
    libmysqlclient_r.so.16 => not found

アプリの動的な依存関係から。

または、すべてのプラットフォーム用に個別のインストール パッケージを作成する必要がない限り、他の提案を歓迎します。

ありがとう

4

0 に答える 0