私は Qt のクロス コンパイルと移植が初めてなので、ご容赦ください。
私の目標は、Qt ベースのアプリケーションに Playbook OS でQwt ライブラリを使用することです。Qt for Blackberry Playbookに関するすばらしいチュートリアルを見つけ、タブレットで簡単な Qt "Hello World" アプリケーションを実行することができました。
私の次のステップは、Qwt ライブラリを構築し、それをアプリケーションで利用することでした。私はqmakeについて読むのに時間を費やし、問題のないアプリケーションとともにライブラリを構築しましたが、アプリケーションを実行すると、起動するとすぐにクラッシュします。
ライブラリとアプリの両方を構築する際に行った手順は次のとおりです。
- Qwt のソースをダウンロードし、RIM の Qt ポートに付属の qmake を使用しました。参考までに: Qt ポートをインストールすると、「ステージ」ディレクトリが作成され、qmake は次の場所にあります
~/stage/nto/armle-v7/usr/lib/qt4/bin/qmake
。まず、デザイナー プラグインに関するエラーが発生しましたが、デザイナー スイッチをオフにすると、エラーや警告なしでコンパイルされました。 - Qwt に付属するサンプルの 1 つを作成しました。
QCoreApplication::addLibraryPath("app/native/lib");
コードにオンラインで追加しただけです(チュートリアルの指示に基づいて):. これは、実行時に共有ライブラリがデバイス上のどこにあるかをアプリケーションに伝えるために必要です。ここでも問題ありません。私の .pro ファイルは次のようになりました。
include( $${PWD}/../examples.pri )
TARGET = curvdemo1
DESTDIR = .
QMAKE_LFLAGS += '-Wl,-rpath,\'./app/native/lib\''
LIBS += -lbbsupport
SOURCES = \
curvdemo1.cpp
package.target = $${TARGET}.bar
package.depends = $$TARGET
package.commands = blackberry-nativepackager \
-devMode \
-package $${TARGET}.bar -arg -platform -arg blackberry \
blackberry-tablet.xml $$TARGET \
-e icon.png res/icon.png \
-e splashscreen.png res/splashscreen.png \
-e $$[QT_INSTALL_LIBS]/libQtCore.so.4 lib/libQtCore.so.4 \
-e $$[QT_INSTALL_LIBS]/libQtGui.so.4 lib/libQtGui.so.4 \
-e $$[QT_INSTALL_LIBS]/libQtOpenGL.so.4 lib/libQtOpenGL.so.4 \
-e $$[QT_INSTALL_LIBS]/libQtNetwork.so.4 lib/libQtNetwork.so.4 \
-e $$[QT_INSTALL_LIBS]/libbbsupport.so.4 lib/libbbsupport.so.4 \
-e $$[QT_INSTALL_PLUGINS]/platforms/libblackberry.so lib/platforms/libblackberry.so
-e /home/builder/Qwt/qwt-6.0.1/lib/libqwt.so.6 lib/libqwt.so.6 \
-e /home/builder/Qwt/qwt-6.0.1/lib/libqwtmathml.so.6 lib/libqwtmathml.so.6
QMAKE_EXTRA_TARGETS += package
アプリをパッケージ化してデプロイしましたが、スプラッシュスクリーンが消えるとすぐにアプリケーションがクラッシュします。
上記の手順は、Qwt を共有ライブラリとして使用する私の試みを参照しています。QwtDll
ライブラリの指示に従って削除して静的ライブラリとしてビルドしようとしましたが、最終結果は同じです。バイナリは、そのサイズに基づいて静的ライブラリを使用していることがわかります。
私の少しの知識で、Qwt ライブラリが適切にビルドされておらず、テスト アプリで適切にロードできないと推測できます。もしそうなら、このライブラリを Playbook OS に適切に移植する方法は? そうでない場合、これらの手順で他に何が欠けていますか?
ところで、当分の間、Momentics を使用してデバッグすることはできません (他の理由により)。
私の学習経験に貢献していただきありがとうございます。