Qt Extended Improved
Qt Software cancelled the Qt Extended project on 3 March 2009 (Qt Software discontinues Qt Extended). The community created a fork of it and called it Qt Extended Improved:
- bug tracking system
- prebuilt rootfs images for 4.4.3
- prebuilt tarballs of qt extended improved
- git repository
Installing Qt Extended Improved on the FreeRunner
Install Qt Extended 4.4.3
There are no rootfs images for Qt Extended Improved, so first we need to install Qt Extended 4.4.3, then we can upgrade to Qt Extended Improved. Follow the instructions at Qt Extended 4.4.3.
Install Qt Extended Improved
Boot your FreeRunner into Qt Extended 4.4.3. Create a USB network connection between your workstation and the FreeRunner. Download the most recent pre-built tarball. Now you must unpack the tarball to a temporary directory and copy its contents to the FreeRunner's /opt/Trolltech/Qtopia directory:
mkdir temp cd temp tar -xzvf ../qt-extended-improved-bin-only-20090316.tar.gz scp -r * 192.168.0.202:/opt/Trolltech/Qtopia/
Reboot your FreeRunner and you should be running Qt Extended Improved.
Building Qt Extended Improved
First download a source tar ball from the git repository. Then make the build directory and set the environment variables. In this example, I write the environment variables to a file then I source the file.
mkdir -p /opt/QtExtended/build cd /opt/QtExtended tar -xzvf qt-extended-improved.tar.gz echo "export QTOPIA_DEPOT_PATH=/opt/QtExtended/qt-extended-improved" >> setpaths echo "export QPEDIR=/opt/QtExtended/build/" >> setpaths . setpaths
Install the toolchain:
cd /opt wget http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz tar xzvf arm920t-eabi.tgz /
Do the linux three-step: configure, make, make install. Plus we build the sdk so we can make our own apps later, if we want.
cd $QPEDIR $QTOPIA_DEPOT_PATH/configure -device neo -D _FORTIFY_SOURCE=0 make make install bin/qbuild sdk
The binaries are in the $QPEDIR/image directory. You can copy these to your freerunner over usb like this:
scp -r $QPEDIR/image/* 192.168.0.202:/opt/Trolltech/Qtopia/
Compiling an Example Qt Extended App
First set those indispensable Qt environment variables:
Next create a directory /opt/Qtopia/build/myapps. Copy the example app. Rename the example app to something that makes sense (how about "example"!). Create the Makefile and build the example.
desktop# mkdir /opt/QtExtended/build/myapps desktop# cd /opt/QtExtended/build/myapps desktop# cp -R $QTOPIA_DEPOT_PATH/examples/application . desktop# mv application example desktop# cd example desktop# $QPEDIR/bin/qbuild
Now you have an executable example. It won't execute on your workstation - you must secure copy it to your FreeRunner. Then secure shell into the FreeRunner, import the Qtopia environment variables and execute the app:
desktop# scp example root@freerunner:/home/root firstname.lastname@example.org's password: example 100% 33KB 33.4KB/s 00:00 desktop# ssh 192.168.0.202 root@freerunner's password: freerunner:~# . /opt/Trolltech/Qtopia/qpe.env freerunner:~# ./example
Create a .qpk file, an installable package:
desktop# $QPEDIR/bin/qbuild packages
Create a packages.list file for the software installer and put it in the http server root:
desktop# sudo $QTOPIA_DEPOT_PATH/bin/mkPackages /srv/www/htdocs/
Copy your new package to the http server root:
desktop# sudo cp pkg/*.qpk /srv/www/htdocs/
On your phone, find Settings > Software Packages; press the Downloads tab; go to Options > Edit Servers; Options > New; then enter a name and URL of http://192.168.0.200:80, or the URL for your web server. The software package manager should then be able to see $HTTPROOT/packages.list and install any packages you have.
If you compile your own version of Qt Extended Improved, you can add mp3 support using this patch. Untar the file from your qt-extended-improved directory (it installs some files in the src tree) and patch using the patch file, eg:
desktop# cd $QTOPIA_DEPOT_PATH desktop# tar -xzvf qt-extneded-4.4.3-libmad.tar.gz desktop# patch -p0 < qt-extended-4.4.3-libmad.patch
Now configure, build, etc.