FreeBSD で Qtopia for Linux Zaurus
- 編集
[
サイトトップ
|
上へ
|
編集
|
一覧・作成
]
FreeBSD で Qtopia for Linux Zaurus * あらまし Linux Zaurus (SLシリーズ) を購入することを前提に FreeBSD (4.7-R) 上に Qt/Embedded, Qtopia の開発環境を構築中。 以下はそのメモ。メモ書き以上のものではないので不備は御容赦。 ただし、以下の方法で作成したアプリケーションは実機上で 一応動作しているそうです。 * Linux 互換環境 シャープが供給するツールチェインは Linux/i386 ホスト用に 作成されているので、まず Linux 互換環境をインストール。 ついでにシンボリックリンクもはっておく。 > # cd /usr/ports/emulators/linux_base > # make install > # ln -s /compat/linux/opt /opt * クロスコンパイラ シャープの開発者向けページからコンパイラ、ライブラリ、ヘッダファイル、 ユーティリティをダウンロード。 - Linux 関連 開発ツール rpm でインストール。 > # rpm -Uvh -i --ignoreos --root /compat/linux \ > gcc-cross-sa1100-2.95.2-0.i386.rpm \ > glibc-arm-2.2.2-0.i386.rpm \ > linux-headers-arm-sa1100-2.4.6-3.i386.rpm \ > binutils-cross-arm-2.11.2-0.i386.rpm これでコマンドラインものの開発準備は完了。試しに、 > % cat > hello.c > #include <stdio.h> > > int > main() > { > printf("hello\n"); > } > ^D > % env CC=/opt/Embedix/tools/bin/arm-linux-gcc make hello > /opt/Embedix/tools/bin/arm-linux-gcc -O -pipe hello.c -o hello > % * Qt/Embedded つづいて GUI 環境も含めた開発環境の構築に進む。 ツールキットは Qt/Embedded, デスクトップ環境は Qtopia 。 いずれも TrollTech 社から供給される。 TrollTech の FTPサイト から、 > qt-embedded-2.3.4.tar.gz > qtopia-free-1.6.0.tar.gz > tmake-1.11.tar.gz > qt-x11-2.3.2.tar.gz をダウンロードする。つづいて以下のようにソースを展開。 > % mkdir /opt/Qtopia > % mkdir /opt/Qtopia/src > % mkdir /opt/Qtopia/src/sharp > % cd /opt/Qtopia/src/sharp > % tar xzf <somewhere>/qtopia-free-1.6.0.tar.gz > % tar xzf <somewhere>/qt-embedded-2.3.4.tar.gz コンパイルは下のようなシェルスクリプトで行った。 > #!/bin/sh > > export PATH=/opt/Embedix/tools/bin:$PATH > cd /opt/Qtopia/src/sharp/qtopia-free-1.6.0 > export QPEDIR=$PWD > > cd ../qt-2.3.4 > export QTDIR=$PWD > export QTEDIR=$QTDIR > export PATH=$QTDIR/bin:$PATH > export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH > > rm -f src/tools/qconfig-qpe.h > cp $QPEDIR/src/qt/qconfig-qpe.h src/tools || exit 2 > > ./configure -qconfig qpe -qvfb -depths 4,8,16,32 \ > -xplatform linux-sharp-g++ && gmake sub-src * Qtopia つづいて Qtopia のコンパイルに進むが、下準備が必要。 ** tmake TrollTech の Makefile ジェネレータ tmake を準備する。 Perl スクリプトなので、アーカイブを展開して、環境変数を設定する だけでよい。 また、シャープの開発者向けサイトには、 SLシリーズ用の tmake 設定ファイルが置いてあるが、 tmake-1.11 にはすでに含まれているので不要。 > % cd /opt/Qtopia > % tar xzf <somewhere>/tmake-1.11.tar.gz > % mv tmake-1.11 tmake ** libuuid Qtopia は UUIDライブラリを必要とするので、適当に作る。 > % cd /opt/Qtopia/src > % fetch http://us.dl.sourceforge.net/e2fsprogs/e2fsprogs-1.27.tar.gz > % tar xzf e2fsprogs-1.27.tar.gz > % cd e2fsprogs-1.27 > % ./configure > % (cd util; make subst) > % util/subst -f util/subst.conf lib/ext2fs/ext2_types.h.in > \ > lib/ext2fs/ext2_types.h つづいて以下の Makefile を e2fsprogs-1.27/lib/uuid にコピー、 コンパイル。 > TOOLCHAIN = /opt/Embedix/tools/bin > CC = ${TOOLCHAIN}/arm-linux-gcc > CFLAGS = -I.. > AR = ${TOOLCHAIN}/arm-linux-ar rc > RANLIB = ${TOOLCHAIN}/arm-linux-ranlib > OBJS = \ > clear.o \ > compare.o \ > copy.o \ > gen_uuid.o \ > isnull.o \ > pack.o \ > parse.o \ > unpack.o \ > unparse.o \ > uuid_time.o > > TARGET = libuuid.a > > ${TARGET}: ${OBJS} > ${AR} $@ ${OBJS} > ${RANLIB} $@ > > % cp <somewhere>/Makefile lib/uuid > % cd lib/uuid > % make できた libuuid.a と uuid.h をそれぞれコピー。 > # cp libuuid.a /opt/Embedix/tools/arm-linux/lib > # mkdir /opt/Embedix/tools/arm-linux/include/uuid > # cp uuid.h /opt/Embedix/tools/arm-linux/include/uuid ** Qt/X11 Qt/X11 版のコンパイルを行う。 Qtopia のコンパイルに uic 、 また後のネィティブ版の実行に qvfb が必要なため。 コンパイル時 -static にしておくとあとあと楽。 また、Qt/X11 の他のバージョンがインストールされているときは、 アーカイブ展開の後、以下のパッチをあてること。 > --- qt-2.3.2/src/Makefile.in.orig Tue Mar 25 00:18:01 2003 > +++ qt-2.3.2/src/Makefile.in Tue Mar 25 00:18:18 2003 > @@ -3,7 +3,7 @@ > ####### Compiler, tools and options > > CXX = $(SYSCONF_CXX) $(QT_CXX_MT) > -CXXFLAGS= $(SYSCONF_CXXFLAGS_OPENGL) $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS_X11) $(SYSCONF_CXXFLAGS) $(SYSCONF_CXXFLAGS_LIB) $(QT_CXXFLAGS_OPT) > +CXXFLAGS= $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS_OPENGL) $(SYSCONF_CXXFLAGS_X11) $(SYSCONF_CXXFLAGS) $(SYSCONF_CXXFLAGS_LIB) $(QT_CXXFLAGS_OPT) > CC = $(SYSCONF_CC) $(QT_C_MT) > CFLAGS = $(SYSCONF_CFLAGS) $(SYSCONF_CFLAGS_LIB) $(QT_CFLAGS_OPT) > INCPATH = > #!/bin/sh > > cd /opt/Qtopia/src > tar xzf <somewhere>/qt-x11-2.3.2.tar.gz > cd qt-2.3.2 > export QTDIR=$PWD > export PATH=$QTDIR/bin:$PATH > export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH > ./configure -no-opengl -no-xft -static || exit 2 > gmake || exit 2 > gmake -C tools/qvfb || exit 2 なお、Qt3 用の uic は使えないので注意すること。 ** Qtopia 最後に Qtopia のコンパイル。以下のパッチをあててから行う。 > diff -ur qtopia-free-1.6.0.orig/src/configure qtopia-free-1.6.0/src/configure > --- qtopia-free-1.6.0.orig/src/configure Thu Feb 27 10:25:11 2003 > +++ qtopia-free-1.6.0/src/configure Sun Mar 23 13:01:17 2003 > @@ -401,7 +401,7 @@ > if [ "$f" = server ] > then > # Qt dependancies, plugins, applications, libraries > - EXTRALIBS="-ljpeg -Wl,-Bstatic -Wl,-whole-archive $SERVERPLUGINS -Wl,-no-whole-archive -Wl,-Bdynamic $SERVERLIBS $EXTRALIBS" > + EXTRALIBS="-Wl,-Bstatic -Wl,-whole-archive $SERVERPLUGINS -Wl,-no-whole-archive -Wl,-Bdynamic $SERVERLIBS $EXTRALIBS" > fi > MOC_DIR=.moc > OBJECTS_DIR=.obj > #!/bin/sh > > export PATH=/opt/Embedix/tools/bin:$PATH > > export PATH=/opt/Qtopia/tmake/bin:$PATH > export TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-sharp-g++ > > cd /opt/Qtopia/src/sharp/qt-2.3.4 > export QTDIR=$PWD > export QTEDIR=$QTDIR > export PATH=$QTDIR/bin:$PATH > export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH > > rm -f bin/uic > ln -s /opt/Qtopia/src/qt-2.3.2/bin/uic bin/uic > > cd ../qtopia-free-1.6.0 > export QPEDIR=$PWD > export PATH=$QPEDIR/bin:$PATH > cd src > ./configure -platform freebsd-g++ -xplatform linux-sharp-g++ && gmake これで実機用アプリケーションの開発が可能になった(はず)。 * 実機版の実行 実は SL-C700 シリーズの Qtopia は 1.5.0 なのだが、 1.6 で構築したアプリケーションも動く(と報告があった)。 static リンクしない場合は、 libqtopia.so.1 を実機にインストールしておく必要がある。 副作用があるかどうかは不明。 * native 環境 実機がなくてもアプリケーションのデバッグがホスト側でできるように、 QtE と Qtopia を FreeBSD 上でもコンパイルしておく。 Qtopia を FreeBSD でネイティブにコンパイルするためのパッチ。 - qtopia-free-1.6.0-FreeBSD4.diff 以下の制限あり。 - コンパイルが終わることを優先。 サンプルアプリの動作確認はあまりしてない。 - timezone の扱いはでたらめ。時計関係の動作に支障あり。 - このパッチをあてると、今度は Linux でのコンパイルが通らない。 FreeBSD ホスト専用。 - アプリケーション atd と symlinker のコンパイルはあきらめた。 ** Qt/E クロス版と同様、qt-embedded-2.3.4.tar.gz, qtopia-free-1.6.0.tar.gz を 展開し、つづいて上のパッチをあてる。 > cd /opt/Qtopia/src > tar xzf <somewhere>/qt-embedded-2.3.4.tar.gz > tar xzf <somewhere>/qtopia-free-1.6.0.tar.gz > patch -s -p0 < qtopia-free-1.6.0-FreeBSD4.diff つづいて以下のようにコンパイル。 > cd qtopia-free-1.6.0 > export QPEDIR=$PWD > cd ../qt-2.3.4 > export QTDIR=$PWD > export QTEDIR=$QTDIR > export PATH=$QTDIR/bin:$PATH > export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH > > rm -f src/tools/qconfig-qpe.h > cp $QPEDIR/src/qt/qconfig-qpe.h src/tools || exit 2 > > ./configure -qconfig qpe -qvfb -depths 4,8,16,32 && gmake sub-src ** libuuid クロス版同様 libuuid が必要になるので、 e2fsprogs を ports を使ってインストール。 > # cd /usr/ports/sysutils/e2fsprogs > # make install ** Qtopia 以下の手順でコンパイル > export PATH=/opt/Qtopia/tmake/bin:$PATH > export TMAKEPATH=/opt/Qtopia/tmake/lib/freebsd-g++ > > cd qt-2.3.4 > export QTDIR=$PWD > export QTEDIR=$QTDIR > export PATH=$QTDIR/bin:$PATH > export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH > > rm -f bin/uic > ln -s /opt/Qtopia/src/qt-2.3.2/bin/uic bin/uic > > rm -rf lib/libuuid* include/uuid > aln -s /usr/local/include/uuid include > ln -s /usr/local/lib/libuuid.* lib > > cd ../qtopia-free-1.6.0 > export QPEDIR=$PWD > export PATH=$QPEDIR/bin:$PATH > cd src > ./configure -platform freebsd-g++ && gmake * native 版の実行 > setenv LD_LIBRARY_PATH=/opt/Qtopia/src/qt-2.3.4/lib:$LD_LIBRARY_PATH > setenv QTDIR=/opt/Qtopia/src/qt-2.3.4 > cd /opt/Qtopia/src/qtopia-free-1.6.0/bin > /opt/Qtopia/src/qt-2.3.2/tools/qvfb/qvfb & > ./qpe * 関連リンク - ザウルス宝箱 Pro - TrollTech - Qtopia 事始め - Linux ザウルス開発系スレッド -2ch - XScaleなコードを吐くコンパイラを手に入れる * 変更履歴 - 2003/7/7 実機版の実行 - 2003/6/1 関連リンク追記 - 2003/3/22 公開 $Date: 2006/03/16 20:49:12 $
円周率を小数点以下二桁まで入力してください:
Copyright (C) 2008-2022
Startide Project,
all rights reserved.