KDE on scratchbox for maemo 4

From Maemo Wiki
Revision as of 10:10, 30 December 2009 by imported>tstaerk (with SUSE 11.2 you do not get the "happy hacking" message, because a lot of errors in dpkg)
Jump to navigationJump to search

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.

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

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.2 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
/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:

ls /usr/include/qt4/
Qt          QtAssistant  QtDBus      QtGui   QtNetwork  QtScriptTools  QtSvg   QtUiTools  QtXml
Qt3Support  QtCore       QtDesigner  QtHelp  QtScript   QtSql          QtTest  QtWebKit   QtXmlPatterns

verify it does not work:

qmake
mmap: Permission denied