The Qt Palmtop, a Palm-like environment based on Qt, offers some advantages over the default X distribution that comes with the Intimate / Debian distribution for linux-capable handhelds such as the Compaq iPAQ 3600 series. These include readability, availability of a bunch of PIM tools, and a framework for compiling one's own programs in the widely-used (read: KDE) Qt environment.
The question is, will it run under intimate. The answer: Sure 'nuff (that's Texan for yes)!
Here's how (do this stuff over the serial port running PPP from your host computer):
#cd /etc/rc2.d/ #./S99x stop (stops the X server) #rm S99x (or copy it someplace: it's just a link) B. Copy ipkg from familiar to intimate #mount /boot #cp -p /boot/usr/bin/ipkg /usr/bin #cp -p /boot/ipkg.conf /etc #umount /boot #mkdir /usr/lib/ipkg #cd /usr/lib/ipkg #touch available pending status #mkdir info
#cd /usr/lib #cp -p /usr/lib/libstdc++-3-libc6.2-2-3.*.0.so < someplace safe > (this appears to be optional) #ipkg update #ipkg get libc6 (from the familiar site. Note that this will overwrite the libc6 library you just copied, which is why you copied it. ipkg will ask if you want to install a bunch of familiar packages on which ipkg depends. I answered No.) You will find that many system commands, like ls, won't work now because they can't find the libc6 library. Do either: #ldconfig (in case you didn't copy the libc6 lib) or copy the libc6 library back into /usr/lib. You might want to run ls to make sure it works!
#vi /etc/ipkg.conf Comment out the exiting IPKG_SOURCE line, then add IPKG_SOURCE="http://qpe.sourceforge.net/packages/ipaq/" to the file #ipkg update (to get the list of qpe packages)
#ipkg install qpe-qipkg (This should do the trick. In my case, the load aborted because I didn't have the right libc6 lib, and reinstalling qpe-qipkg didn't add any more packages. So, I did #ipkg install qpe-base and that brought over everything else for the initial installation.) #ls -l /opt/QtPalmtop/bin/qpe (If this file doesn't exist, the install wasn't successful and the new desktop won't start - see /etc/init.d/qpe for details.)
#cd /etc/init.d #rm S14ppp #rm S10pcmcia
#ipkg list #ipkg install (your choice of what's on the list)
# this causes PPPD to make the host computer the default target for # IP addresses outside this machine defaultroute # this causes PPPD to wait until it receives a packet from the host PPPD # daemon before sending any packets. Hopefully this will avoid the # "serial line is looped back" problem. Thanks to Michael Beach via # http://www.geocrawler.com/archives/3/59/1997/7/0/2206064/ silent
To compile software, you will need to follow the instructions here and here. If you follow those instructions carefully, you don't need to read much below. But in case you don't want to read those, here is what I found to work.
After running apt-get install xlib6g-dev to get the files and libraries for X client development, you can compile the full X11 version of Qt. The compilation broke in the designer files, which exhausted RAM and swap space. But, uic compiled just fine. I had to download the X11 development files because it was way too much work to strip out the X11 references in the library files on which uic depends.
When you are done with this compilation, you will have to rename the directory tree because the Qt/embedded tree has the same name as that of the X11 distribution. When you have finished compiling Qt/embedded, remember to copy uic to from the renamed directory tree to the new $QTDIR/bin directory.
cd $QTDIR patch -p0 < $QPEDIR/qt/qte231-for-qpe.patchIf you don't apply this patch, you will encounter the following error when compiling konqueror. (I provide the error messages so that people can retrieve this document when they use search engines to look for help with individual error messages.):
render_image.cpp: In method `void khtml::RenderImage::printObject(QPainter *, int, int, int, int, int, int)': render_image.cpp:205: aggregate `class QWMatrix matrix' has incomplete type and cannot be initializedThanks to Simon Hausmann email@example.com for explaining patiently that this patch will fix this problem.
If you don't make the two lists identical, you may get the infamous "undefined reference to `QMetaObject::new_metaobject(..." error. (I provide the error messages so that people can retrieve this document when they use search engines to look for help with individual error messages.)
This error results when the QT_NO_PROPERTIES flag is defined for one library and not for the other. It turns out that the number of arguments in the instantiator for QMetaObject::new_metaobject() is reduced by 4 when this flag is defined during Qt/embedded (libqte.so) compilation, so the linker doesn't find an instantiator with a matching argument list when the other library was compiled with this flag undefined.
The easiest way to make the two lists identical is:
ln -s $QPEDIR/qt/qconfig-qpe.h $QTDIR/src/tools
Copyright (C) 2001 Lawrence E. Widman. Unabridged reproduction in any form is authorized as long as the copyright notice is retained. Corrections and updates are welcome, but inaccurate changes are not :), so let me know if you want me to change this, or feel free to write your own!