KDE on scratchbox for maemo 4
(→Re-login) |
(→Install Qt) |
||
Line 92: | Line 92: | ||
Good - it tries to connect the X server, so it works. | Good - it tries to connect the X server, so it works. | ||
+ | |||
+ | == See graphics == | ||
+ | To see graphics, you need to start Xephyr. This example shows how to install and run it on SUSE Linux 11.1. | ||
+ | root@i386 $ yast -i xorg-x11-server-extra | ||
+ | root@i386 $ Xephyr :4 | ||
+ | Now back in your scratchbox | ||
+ | [sbox-DIABLO_ARMEL: ~/qttest] > export DISPLAY=:4 | ||
+ | [sbox-DIABLO_ARMEL: ~/qttest] > ./qttest |
Revision as of 14:48, 30 December 2009
This article describes how to compile KDE for maemo. It takes the Nokia N810 as example device. It uses the cross-compiling environment scratchbox on an Intel-based computer.
Contents |
Overview
- maemo is the core software stack that runs on mobile devices like Nokia's N810 or N900
- garage is where the projects for maemo are hosted, somewhat compareable to Sourceforge.
- OS2008 is maemo 4.x (more info). Compare it with Debian's Lenny.
- Diablo is the version (feature upgrade 2008) of maemo.
- Scratchbox is a cross-compiling environment to enable you to create software for maemo on an i386.
- Busybox is a single binary that allows you to run commands like ls, cat and bunzip2
- Hildon is an application framework and desktop shell for maemo, compare it to the role that Plasma plays in KDE 4
On the Nokia itself
- install openssh on the Nokia N810
- install subversion
ssh root@localhost apt-get install subversion
On your desktop
You cannot install scratchbox on an X64 computer, so, install an i386 into a VMWare virtual machine. The following describes how to install scratchbox into a SUSE 11.1 32bit installation. It might work same or similar with any Linux.
Set up scratchbox
First, we want to compile a "hello world" program for the Nokia. Here is how.
- Set up VMWare Server 2.0
- Install a virtual machine into VMWare Server, 40GB hard drive, 1024 GB RAM
- Install SUSE Linux 11.1 from DVD. At the bootscreen, type F7 and select X86 instead of X86_64. That way, you will get a 32bit operating system.
- Take a VMware SNAPSHOT from your virtual machine so you can revert to this state
- Boot your virtual machine
- Set up scratchbox
root@i386 # useradd -m scratchboxuser root@i386 # passwd scratchboxuser root@i386 # wget http://repository.maemo.org/stable/diablo/maemo-scratchbox-install_4.1.2.sh root@i386 # chmod 777 maemo-scratchbox-install_4.1.2.sh root@i386 # ./maemo-scratchbox-install_4.1.2.sh -s /scratchbox root@i386 # /scratchbox/sbin/sbox_adduser scratchboxuser root@i386 # su - scratchboxuser
- set up the SDK
scratchboxuser@i386 $ wget http://repository.maemo.org/stable/diablo/maemo-sdk-install_4.1.2.sh
Start the install script and accept all choices:
scratchboxuser@i386 $ sh maemo-sdk-install_4.1.2.sh
- start scratchbox
scratchboxuser@i386 $ /scratchbox/login [sbox-DIABLO_ARMEL: ~] > sb-conf select DIABLO_ARMEL
Re-login
To re-login after a reboot of your virtual machine run
/scratchbox/sbin/sbox_ctl start scratchboxuser@i386 $ /scratchbox/login
Hello world
Now we write the canonical hello world program in C.
[sbox-DIABLO_ARMEL: ~] > cat > main.c << EOF #include <stdio.h> int main() { printf("hello world"); } EOF [sbox-DIABLO_ARMEL: ~] > gcc main.c [sbox-DIABLO_ARMEL: ~] > file a.out a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), not stripped
- copy the file to your Nokia N810 using scp
=> the file is executable on the Nokia
Install Qt
Now it's time to install qt. Add to your /etc/apt/sources.list:
deb http://repository.maemo.org/extras/ diablo free non-free deb-src http://repository.maemo.org/extras/ diablo free
and tell the system to re-read it:
apt-get update
install the qt development package:
apt-get install libqt4-dev
verify it has been installed:
mkdir qttest cd qttest/ cat >main.cpp #include <QApplication> #include <QPushButton> int main(int argc, char ** argv) { QApplication qa(argc,argv); QPushButton* qp=new QPushButton("hello world"); qp->show(); return qa.exec(); } qmake -project && qmake && make && ./qttest g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/targets/DIABLO_ARMEL/usr/share/qt4/mkspecs/linux-g++ -I. -I/targets/DIABLO_ARMEL/usr/include/qt4/QtCore -I/targets/DIABLO_ARMEL/usr/include/qt4/QtGui -I/targets/DIABLO_ARMEL/usr/include/qt4 -I. -I. -o main.o main.cpp g++ -Wl,-O1 -o qttest main.o -L/usr/lib -lQtGui -lQtCore -lpthread qttest: cannot connect to X server
Good - it tries to connect the X server, so it works.
See graphics
To see graphics, you need to start Xephyr. This example shows how to install and run it on SUSE Linux 11.1.
root@i386 $ yast -i xorg-x11-server-extra root@i386 $ Xephyr :4
Now back in your scratchbox
[sbox-DIABLO_ARMEL: ~/qttest] > export DISPLAY=:4 [sbox-DIABLO_ARMEL: ~/qttest] > ./qttest