Archive for the 'Symbian OS' Category

Symbian development on linux, part 1

Wednesday, August 3rd, 2005

So, the reason for starting this blog was to document the installation of a Symbian OS development environment on linux, using a Series 60 SDK. So here we go.

I use ubuntu, version 5.04 aka. hoary hedgehog on a IBM laptop.

The first source of information was Symbian Programming Tutorial Blog by Michele SciabarrĂ  . I soon found out that I’ve got two options, GnuPoc and the Symbian SDK on Unix. There seems to be another port of the SDK, and I might look into that later.

I will try to install both GnuPoc and the SDK on Unix, starting with the later. Gnu Poc claims that the emulator can bu run using wine. The emulator for Symbian OS is considered to be useless by some, since it does not always behave as a real device would do. However, i believe that the debugger is a great tool which makes life easier for every developer, in particular the new developers. I started developing for Series 60 due to a school project at IT University of Sweden with no former knowledge of C++. In this case, the debugger was a blessing.

I started of by downloading a Series 60 SDK from Symbian.com. For some reason the only SDK i could get was the v2.1 Nokia edition, all other links showed up as blank pages. Another downside with this page is that I was forced to subscribe to a newsletter to be allowed to download anything. However, I found out that the “Nokia edition” was really what Nokia calls the .NET edition. So, my advice would be to download a .NET edition of the SDK of choice from forum.nokia.com instead. The SDK on Unix is supposed to support the following SDK:s: (stolen from SDK on Unix homepage)

  • Series 60 SDK 2.1 (Thanks to Simon Woodside)
  • Series 60 SDK Feature pack 2
    Devices e.g. Nokia 7650, 6600, 6630, Siemens SX1
  • Series 80 SDK 2.0
    Devices e.g. Nokia Communicator 9500, 9300
    Note: Some features of the 92×0 are not supported by the 2.0 SDK, e.g. the PLP library
  • UIQ SDK 2.1
    Devices e.g. Sony Ericsson P800/P900/P910

It is also said that running several SDK:s at once should be no problem what so ever.

Second I downloaded the unofficial modified GCC source code from www.inf.u-szeged.hu/symbian-gcc. The official version can be found at www.symbian.com/developer/downloads/tools.html
I downloaded the unofficial, GCC 3.0-psion-98r2 (Symbian build 9/546)
I tried GCC 3.0-psion-98r2 (Symbian build 8/546) but ran in to build problems. Well, the newer, the better.

Finally i got the so called “glue and morph” stuff from the SDK on Unix homepage.

This should be it, and we are ready to continue.

First, I put the “glue and morph” stuff in /usr/local/sdk2unix-1.6a (sorry, this might be a bad place, i never got round to read up on the unix file structure, i just do what other does)

cd /usr/local/
tar xvfz path/to/sdk2unix-1.6a.tar.gz

Then the modified GCC.
Now, this depends on the version of the modified GCC source you choose. Note that this will take a while.


cd /usr/local/sdk2unix-1.6a
bin/install_gcc_YOUR-VERSION PATH_TO_GCC_SOURCE.tar.gz /path/to/future/gcc/

in my case /path/to/future/gcc is /usr/local/gcc-symbian

The gcc-symbian directory must not exist before, it will be created. The path to the gcc-symbian directory must be an absolute path though. This is where the gcc binaries will end up.

Well, this failed, and might do for you as well. Look in /tmp/sdk.log, usually at the end. In my case I was missing output from lex, and therefore I installed “flex”, and at the second try, I missed bison.


apt-get install flex bison

Now make sure to remove anything that was created by the previous command, not apt-get, but the install_gcc….. and then run the command again.

Since the sdk is packaged using InstallShield (win32 program) something called cabextract is needed in combination with the script. Please install cabextract and make sure it is in your path. In my case, it was the usuall apt-get install.
I put the sdk in /usr/local/series60_sdk_2.1

cd /usr/local/sdk2unix-1.6a
bin/install_series60_sdk_21 /path/to/S60_SDK_2_1_NET.zip PATH_WHERE_SDK_WILL_BE_PLACED GCC_PATH

in my case:

bin/install_series60_sdk_21 /usr/local/S60_SDK_2_1_NET.zip /usr/local/series60_sdk_2.1 /usr/local/gcc-symbian/

That’s supposedly it!
Well, part two will be testing the install, but for that I need a phone, which I will have in about three weeks.