Experimental packages for Symbian development on Linux

Updated: 23rd December 2010

A while back we wrote about how you could do development for Symbian in Linux. However, the process was complicated and required a lot of manual setup. We have now taken the concept one step further and we now have prepackaged environments, complete with compiler, libraries and all you need to start developing!

I'm obligated to report our disclaimer though: These packages are completely unsupported by Nokia. They are provided on a "best effort" basis only, and are not guaranteed to work correctly on your system! Also note that the packages are not guaranteed to receive updates, and in the future the same functionality may be delivered in a different format, for example through the Qt SDK.

In addition, currently you cannot use this approach to develop for the N8, because Qt 4.7.1 is not installable there. When N8 receives its first phone update however, it will be upgraded to Qt 4.7.1, and then you should be able to deploy on it.

Now, with that out of the way, let's dive into the fun!

Being a Gentoo Linux user myself, it was natural to start by making so-called ebuilds (the package descriptions files for Gentoo). For those not familiar with Gentoo, it doesn't have real packages, but just recipes for how to install packages. Most packages compile from source this way, but this is not strictly required, since your recipe can also contain references to precompiled binaries. The advantage for me was that by having this recipe for building the packages, I could just create Debian packages using the same recipe, and hence get two package types almost for the price of one!

So in other words, the package types provided are Gentoo ebuilds, and Debian .deb packages. RPM users should be able to use the .deb packages by using alien.

Update: A fellow troll was kind enough to provide RPM packages based on Fedora, so RPM users don't have to use alien anymore!

For Debian (and Ubuntu) users:

Download and install the following packages (32-bit versions only):

For RPM (Fedora) users:

Download and install the following packages (32-bit versions only):

For Gentoo users:

  1. Install layman if you haven't already, using emerge -av layman
  2. layman -o http://qt.gitorious.org/qt-labs/symbian-overlay/blobs/raw/master/repositories.xml -L (It's necessary to list the repositories first to update layman's idea of what is available)
  3. layman -o http://qt.gitorious.org/qt-labs/symbian-overlay/blobs/raw/master/repositories.xml -A qt-symbian-overlay
  4. To indicate your acceptance of the licenses, add ACCEPT_LICENSE="nokia-eula sourcery-g++" to your /etc/make.conf
  5. emerge -av qt-symbian-libs

For all users:

After installing, please reopen your shell (or reboot) to include the environment changes made by the packages.

Some software is still required on the phone itself and unfortunately, there is no way to automate this. The first thing you need to check is if you have App TRK; some phones have it built in, but most phones don't. It's easy to check:

  1. Plug it into your computer using the USB cable.
  2. If it says something along the lines of "Debug Services are available", then App TRK is built in on your phone.
  3. If this is not the case, please use the instructions from the Qt Documentation for App TRK to get it installed.

In addition, some libraries also need to be preinstalled.

  1. You can check if your phone has the required software by entering the Application Manager. On most phones this is available from either Settings in the main manu, or from within Applications on the main menu.
  2. Look for "PIPS Installer" and "Standard C++ library Common". If they are both at least version 1.06, then you are fine.
  3. Otherwise you need to install the libraries from here: http://pepper.troll.no/s60prereleases/OpenC-1.7-sis-files.zip.You can use the newly installed runonphone tool to install them by doing runonphone -s <sis-file>.
  4. Finally, Qt itself needs to be installed on the phone, which you can do with the commands:
    1. runonphone -s /usr/share/qt4/qt-symbian/lib/Qt.sis
    2. runonphone -s /usr/share/qt4/qt-symbian/lib/QtWebKit.sis

Of course the users of your application shouldn't have to do this. To make deployment easy for users, see the Deployment guide for Symbian, particularly the part about Smart Installer.

And that's it! You are now ready to start developing! The only notable difference when developing for Symbian using this package, is that you must use qmake-symbian rather than just qmake. Using that, you should be able to try your first hello world application with the following commands:

  1. cd <my-hello-world-app>
  2. qmake-symbian
  3. make runonphone

Some known issues:

  • Wine sometimes fails with "Failed to write UIDs" when running the rcomp tool. This is something the installer takes into account when installing, but unfortunately there is no way to fix it permanently for every user without manual intervention. The fix is simple, just execute this on the command line: cp /usr/s60-sdk/epoc32/tools/uidcrc.exe `find ~/.wine/ -ipath '*windows/system32'`
  • The gcce ebuild has turned out to be tricky to get right. Sometimes it hangs for no reason; if this happens you can retry it and it may work the second time, but don't be surprised if it doesn't work. If this is the case for you, you can install it manually by executing sh /usr/portage/distfiles/symbian-adt-4.4-172-arm-none-symbianelf.bin. Then you can fool Portage into believing you have installed by adding sys-devel/gcce-4.4.172 to /etc/portage/profile/package.provided.
  • More often than not, runonphone fails to autodetect the USB port for your phone when it's plugged in. If this happens for you, read the section about configuring the USB serial driver in the Qt Documentation. You may also have to specify the -p parameter with /dev/ttyUSB1 or /dev/ttyACM1 to runonphone, as described here.

Good luck!

Blog Topics: