前提条件:
ビルドは、freescale.com からダウンロードするか、Yocto fsl-image-guiからビルドできるビルド済みのrootfs(LTIBに基づく)で検証されます
次の手順は、ホストで実行されます。
1. qt5 の git respository をダウンロードします。
$ git clone git://gitorious.org/qt/qt5.git qt5
CDのQT5
これを
2. qt5 パッケージ用にインストールするビルドディレクトリを作成します。このディレクトリは、任意の場所に配置できます。例えば
$ mkdir /opt/qt5
sudo chown -R
installdir を /opt/qt5 とすると仮定します。
3. Qt5ディレクトリに入り、perl init-repositoryスクリプトを実行して、すべてのソースコードをダウンロードします。
Qt5です。すべてのソースコードをダウンロードするには、約1時間かかります。
$ perl init-リポジトリ
4. 添付のlinux-imx5-g++.tar.gzをダウンロードし、qtbase/mkspecs/devices にコピーします。
updstreamを試してみます。
5. 次のパスから
$ gedit qtbase/mkspecs/devices/linux-imx5-g++/qmake.conf
6.qmake.conf の先頭で、configure 行があります。設定行をコピーして、次の場所にあるテキストファイルに貼り付けます
ビルドビルドディレクトリにあります。configure 行を編集して、ツールチェーンとファイルシステムを見つけます。また、以下の点に注意してください。
オプション-no-pch、-no-opengl、-opengl es2を含めます。次に例を示します。
configure 行。
$ cd
$ cd qtbase
$ ./configure -v -opensource -confirm-license -no-pch -opengl es2 -make libs -device imx5 \
-nomake の例 -nomake デモ \
-device-option CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-\
-sysroot
-prefix
7. configure行と実行可能ファイルを含むテキストファイルを作成し、実行します。設定の概要が表示されたら、Qt5
openGL ES 2.0 をサポートしています。ビルドを行う
$make
インストール$make
Qt5 のビルドが完了すると、Qt5 は 2 つの場所にインストールされます。
1.
2.
これは、Qt5 のすべてのライブラリとバイナリがホストとターゲットファイルシステムにインストールされているため、良いことです。そこで
ターゲットには、Qt5 を実行するために必要なすべてのライブラリとバイナリがすでにあります。
8. また、qtjsbackendとqtdeclarativeをビルドする必要があります。
$ cd
$ cd qtjsバックエンド
$ ../qtbase/bin/qmake -r
$ make & make install
$ $ cd
$ cd qtdeclarative
$ ../qtbase/bin/qmake -r
$ make & make install
9. Qtアプリをターゲットで実行する
- ターゲットをNFSまたはSDイメージで起動します。
- フォルダ
- を使用してアプリケーションを起動する
$ cd /usr/local/qt5/examples/opengl/hellogl_es2
$./hellogl_es2-プラットフォームEGLFS
このエラーを取り除くための回避策として、オプション-no-opensslを使用します
./configure -v -opensource -確認-ライセンス -no-pch -opengl es2 -make libs -device imx5 -no-openssl -no-xcb -no-c++11 -device-option CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi- -sysroot /home/juan/imx53/ltib/rootfs -no-gcc-sysroot -prefix /opt/qt5
同じエラーが発生し、回避策として、#if GLIB_CHECK_VERSION(2、22、0)マクロの下の行をコメントアウトしました
======== ./src/corelib/kernel/qeventdispatcher_glib.cpp ===========
QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context)
: mainContext(context)
{
. . .
#if GLIB_CHECK_VERSION (2, 22, 0)
g_main_context_push_thread_default (mainContext);
エンディフ
. . .
}
QEventDispatcherGlib::~QEventDispatcherGlib()
{
. . .
#if GLIB_CHECK_VERSION (2, 22, 0)
g_main_context_pop_thread_default (d->mainContext);
#endif
. . .
}
コンパイルを開始するためにいくつかのオプションを追加する必要がありました。
-no-xcb -no-c++11
しかし、それでもエラーが発生します、最初のエラー:
make [2]:ディレクトリ '/home/user/git/qt5/qtbase/src/network'に入ります
/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-g++-c -pipe -mfloat-abi=softfp -O2 -O2 -march=armv7-a -mfpu=neon -D_LINUX -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_NETWORK_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_ソース-DQT_NO_DEBUG -DQT_CORE_LIB -I../../mkspecs/devices/linux-imx5-g++ -I.-私。。/../include -I../../include/QtNetwork -I../../include/QtNetwork/5.1.0 をご覧ください。-私。。/../include/QtNetwork/5.1.0/QtNetwork-Iカーネル -I../../include/QtCore -I../../include/QtCore/5.1.0-私。。/../include/QtCore/5.1.0/QtCoreの-I.moc/release-shared -I/home/user/ltib/rootfs/usr/include -o .obj/release-shared/qsslsocket_openssl.o ssl/qsslsocket_openssl.cpp
ssl / qsslsocket_openssl.cpp:メンバー関数 'virtual void QSslSocketBackendPrivate::continueHandshake()'で:
SSL / qsslsocket_openssl.cpp:1414:エラー:このスコープで 'q_SSL_ctrl'が宣言されていません
make [2]: *** [.obj/release-shared/qsslsocket_openssl.o]エラー1
make [2]:ディレクトリ '/home/user/git/qt5/qtbase/src/network'を離れます
make[1]: *** [sub-network-make_first] エラー 2
make [1]:ディレクトリ '/home/user/git/qt5/qtbase/src'を離れます
make: *** [sub-src-make_first] エラー 2
エラー:
hread -lgthread-2.0-lrt -lglib-2.0
.obj/release-shared/qeventdispatcher_glib.o:関数 'QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*)'で:
qeventdispatcher_glib.cpp:(.text+0x7f0):'g_main_context_push_thread_default' への未定義の参照
.obj/release-shared/qeventdispatcher_glib.o:関数 'QEventDispatcherGlib::~QEventDispatcherGlib()'で:
qeventdispatcher_glib.cpp:(.text+0xbf0):'g_main_context_pop_thread_default' への未定義の参照
.obj/release-shared/qeventdispatcher_glib.o:関数 'QEventDispatcherGlib::~QEventDispatcherGlib()'で:
qeventdispatcher_glib.cpp:(.text+0xdd4):'g_main_context_pop_thread_default' への未定義の参照
.obj/release-shared/qeventdispatcher_glib.o:関数 'QEventDispatcherGlib::~QEventDispatcherGlib()'で:
qeventdispatcher_glib.cpp:(.text+0xfb0):'g_main_context_pop_thread_default' への未定義の参照
.obj/release-shared/qeventdispatcher_glib.o:関数 'QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*)'で:
qeventdispatcher_glib.cpp:(.text+0x1114):'g_main_context_push_thread_default' への未定義の参照
collect2: ld が 1 つの終了ステータスを返しました
make[2]: *** [../../lib/libQt5Core.so.5.1.0]エラー 1
make [2]:ディレクトリ '/home/mqy/qt5/qtbase/src/corelib'を離れます
助けが必要ですか?
申し訳ありませんが、作るとエラーが発生します
なぜLITBを使ってQT5をビルドしないのですか?
ファイルを qt-project に戻すことを考えましたか?私はこれらがQt 5で動作することを認識しているので、それらが戻ってくることができれば良いでしょう![]()