ここで次の問題があります。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
アプリの動的な依存関係から。
または、すべてのプラットフォーム用に個別のインストール パッケージを作成する必要がない限り、他の提案を歓迎します。
ありがとう