y.nakamura
2015年1月19日 0時53分
中村です。
Armadillo-840のQt5でwebkitを使いたいのですが、
いろいろ調べたり試したりしたところ、
ATDE5ではどうも無理そうな気がしてきました。
方法はあるでしょうか?
試行錯誤もたくさんあり、詳しくは書ききれないのですが、
簡単に書くと、こういう状況です。
- Qt5からはwebkitはwebkitwidgetsという名称になった
- webkitwidgetsはlibqt5webkit5パッケージに入っている
- ATDE5のQt5関連のバージョンは5.0.2
- libqt5webkit5の5.0.2版のi386やamd64はsnapshotのサイトにある
- しかし、5.0.2版は、armhfなどi386とamd64以外が存在しない
- ためしにATDE5にi386のlibqt5webkit5_5.0.2-3_i386を入れてみた
- libwebp4(バージョン指定なし)とqtbase-abi-5-0-2に依存
- libwebp4はsnapshotにあったlibwebp4_0.3.0-3_i386を入れられた
- qtbase-abi-5-0-2はみつからない(もっと新しいのはある)
- そもそもlibqt5webkit5の5.0.2版のarmhfバイナリパッケージがない
- ならば、Qt5全体をバージョンアップしたら、と考えたが...
- 5.0.2+dfsg1-4atmark1なcrossがあり、自分ではどうにもならない
- libqt5webkit5の5.0.2版ソースからのインストールは自分には無理そう
よろしくお願いします。
--
なかむら
コメント
y.nakamura
at_kojiro.yamada
> > こちらでもQt5.0.2のソースから依存するモジュールも含めたqtwebkitのビルドを行ってみます。
> お手数をおかけしますが、よろしくお願いいたします。
Debianで起動したArmadillo-840で、qtwebkitのビルドを行いました。
QWebViewを使用してウェブサイトを表示できましたが、
Segmentation faultが発生することがあります。
Segmentation faultの原因については現在調査中です。
.soファイルまとめたアーカイブを配置しましたので試してみてください。
http://download.atmark-techno.com/misc/forum/qtwebkit-5.0.2-armhf.tar.gz
http://download.atmark-techno.com/misc/forum/qtwebkit-5.0.2-armhf.tar.g…
■ビルド手順
1. a840の準備
Armadillo-840 製品マニュアルを参考に、Debianのルートファイルシステムを構築して、Armadilloを起動してください。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
2. ビルド環境の作成と依存パッケージのインストール
[Debian ~]# apt-get update && apt-get upgrade [Debian ~]# apt-get install build-essential [Debian ~]# apt-get install unixodbc-dev zlib1g-dev libgtk2.0-dev \ libmtdev-dev libglu-dev libicu-dev libjpeg-turbo8-dev \ libmysqlclient-dev libpng-dev libpq-dev libsqlite3-dev libssl-dev \ libudev-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev \ libxcb-randr0-dev libxcb-render-util0-dev libxcb-render0-dev \ libxcb-shape0-dev libxcb-shm0-dev libxcb-sync0-dev \ libxcb-xfixes0-dev libxi-dev libxrender-dev pkg-kde-tools \ unixodbc-dev zlib1g-dev libgtk2.0-dev libmtdev-dev libgl1-mesa-dev \ libglib2.0-dev libglu1-mesa-dev freetds-dev gdb libatspi2.0-dev \ libcups2-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev \ libgl1-mesa-dev debhelper gperf bison ruby flex
3. swap領域の作成
ビルド中にメモリが足りなくなる可能性があるため、3GBのswap領域を作成します。
[Debian ~]# dd if=/dev/zero of=swap bs=8M count=384 [Debian ~]# mkswap swap [Debian ~]# swapon swap
4. パッチとソースコードのダウンロードおよび展開
[Debian ~]# wget http://download.qt-project.org/archive/qt/5.0/5.0.2/single/qt-everywhere-opensource-src-5.0.2.tar.xz [Debian ~]# wget http://download.atmark-techno.com/armadillo-840/cross-dev/source/qtbase-opensource-src_5.0.2+dfsg1-4atmark1.debian.tar.gz [Debian ~]# wget http://users.atmark-techno.com/sites/users.atmark-techno.com/files/forum/fix_eglfs_build_error.patch [Debian ~]# tar xzf qtbase-opensource-src_5.0.2+dfsg1-4atmark1.1.debian.tar.gz [Debian ~]# tar -Jxf qt-everywhere-opensource-src-5.0.2.tar.xz [Debian ~]# tar xzvf qtbase-opensource-src_5.0.2+dfsg1-4atmark1.debian.tar.gz
5. パッチの適用
[Debian ~]# cp fix_eglfs_build_error.patch debian/patches/ [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cd qt-everywhere-opensource-src-5.0.2/qtbase/ [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cat ../../debian/patches/undef_B0.diff |patch -p1 [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cat ../../debian/patches/deppath_gnu.diff |patch -p1 [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cat ../../debian/patches/build_examples.patch |patch -p1 [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cat ../../debian/patches/qeglfswindow.cpp.patch |patch -p1 [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cat ../../debian/patches/evdev.patch |patch -p1 [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cat ../../debian/patches/eglfs_display.patch |patch -p1 [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cat ../../debian/patches/fix_eglfs_build_error.patch |patch -p1
6. ビルド
ビルドが完了するまで1日ほど、かかりますのでご注意ください。
[Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cp -a mkspecs/linux-g++ mkspecs/glibc-g++ [Debian ~/qt-everywhere-opensource-src-5.0.2/qtbase]# cd .. [Debian ~/qt-everywhere-opensource-src-5.0.2]# ./configure -confirm-license -prefix "/usr" -bindir \ "/usr/lib/arm-linux-gnueabihf/qt5/bin" -libdir \ "/usr/lib/arm-linux-gnueabihf" -docdir "/usr/share/qt5/doc" \ -headerdir "/usr/include/qt5" -datadir "/usr/share/qt5" -archdatadir \ "/usr/lib/arm-linux-gnueabihf/qt5" -hostdatadir "/usr/share/qt5" \ -plugindir "/usr/lib/arm-linux-gnueabihf/qt5/plugins" -importdir \ "/usr/lib/arm-linux-gnueabihf/qt5/imports" -translationdir \ "/usr/share/qt5/translations" -sysconfdir "/etc/xdg" -examplesdir \ "/usr/lib/arm-linux-gnueabihf/qt5/examples" -opensource \ -plugin-sql-mysql -plugin-sql-odbc -plugin-sql-psql \ -plugin-sql-sqlite -no-sql-sqlite2 -plugin-sql-tds -system-sqlite \ -platform linux-g++ -system-zlib -system-libpng -system-libjpeg \ -openssl -no-rpath -verbose -optimized-qmake -dbus-linked \ -reduce-relocations -no-strip -no-separate-debug-info -qpa eglfs \ -xcb -glib -icu -accessibility --no-directfb -no-sql-ibase -no-pch \ -arch armv6 -opengl es2 [Debian ~/qt-everywhere-opensource-src-5.0.2]# make module-qtwebkit
ファイル | ファイルの説明 |
---|---|
fix_eglfs_build_error.patch |
y.nakamura
at_kojiro.yamada
y.nakamura
y.nakamura
中村です。
作っていただいたQtWebKitの.soファイルを使って、
動作の確認ができましたので、お知らせしておきます。
QWebViewを使用して簡単なwebブラウザを作り、
あちこちのサイトを見て歩いてみましが、今のところ
Segmentation faultは発生していません。
ATDE5のCtCreatorでビルドして、フラッシュブートの
Armadillo-840の液晶で試しました。
操作はUSBのキーボードとマウスです。
動かしていると
QEGLPlatformContext::makeCurrent: eglError: 300d, this: 0xa7280
QEGLPlatformContext::swapBuffers(): eglError: 12301, this: 0xa7280
のようなエラーが大量に発生して身動きがとれなく
なってしまうことがたまにありますが、
これは別の問題でしょう。
ググるとたくさんでてきますし。
ATDE5環境のQtCreatorでQtWebKitを使ったプログラムを
開発できるようにするには、2~3追加が必要でした。
まず、ヘッダファイル。
i386のDebainパッケージならば
libqt5webkit5-dev_5.0.2-3_i386.deb
に入っているものなのですが、Qtのソース
http://download.qt-project.org/archive/qt/5.0/5.0.2/single/qt-everywher…
の中を探しても見つかりません。(探し方が悪い?)
仕方がないので、i386のDebainパッケージの
libqt5webkit5-dev_5.0.2-3_i386.debから
usr/include/qt5/QtWebKit/
usr/include/qt5/QtWebKitWidgets/
を取り出して、
/usr/arm-linux-gnueabihf/include/qt5/
の下に入れました。
(最初の投稿に書いたような理由で、ATDE5環境に
libqt5webkit5-dev_5.0.2-3_i386.debを入れるのは
断念しています)
次に、Qtの開発環境にWebKitとwebkitwidgetsの
モジュールの存在を教えてあげるためのファイル。
これも、どこからもってきたらいいのかわからず、
(A840でSDブートのDebianを作ってQtWebKitの
ビルドすれば一緒にできあがるのかもしれませんが、
まだ、やってません)
他のモジュールの状態を調べてみると、クロス用と
してのファイルは必要がないみたいでしたので、
ヘッダファイルと同じようにi386のDebianの
libqt5webkit5-dev_5.0.2-3_i386.debから
qt_lib_webkit.priとqt_lib_webkitwidgets.priを
取り出して、ATDE5の/usr/share/qt5/mkspecs/modules/
の下に入れました。
このファイルがないと、QtCreatorで.proファイルに
QT += webkitwidgets
を書くと
Project ERROR: Unknown module(s) in QT: webkitwidgets
というエラーがでます。
最後の1つは必須ではないのですが、
atmark-distのqt5のMakefileの修正です。
romfs/binの下のwebkitを使ったバイナリを入れて
make romfsすれば自動でライブラリを取り込んで
くれますが、QtCreatorでいきなりリモートデバッグを
しようとするようなときに、ライブラリをromfsに
入れてくれるようにするための修正です。
--- user/qt5/Makefile-orig 2014-12-15 18:56:33.000000000 +0900 +++ user/qt5/Makefile 2015-02-10 07:51:28.251354793 +0900 @@ -90,11 +90,16 @@ QtAudioEngine/libdeclarative_audioengine.so \ QtMultimedia/libdeclarative_multimedia.so +WEBKIT_LIBS = \ + libQt5WebKit.so.5 \ + libQt5WebKitWidgets.so.5 + LIBS_y += $(BASE_LIBS) LIBS_y += $(JSBACKEND_LIBS) LIBS_y += $(XMLPATTERNS_LIBS) LIBS_y += $(DECLARATIVE_LIBS) #LIBS_y += $(MULTIMEDIA_LIBS) +LIBS_y += $(WEBKIT_LIBS) PLUGINS_y += $(BASE_PLUGINS) PLUGINS_y += $(DECLARATIVE_PLUGINS)
--
なかむら
y.nakamura
at_kojiro.yamada
2015年1月22日 11時41分
こちらでもQt5.0.2のソースから依存するモジュールも含めたqtwebkitのビルドを行ってみます。