next_inactive up previous

[] [] []©2001-2002 Alfred E. Heggestad []GnuPoc HOWTO


Alfred E. Heggestad

Version 0.03 (Draft)



The GnuPoc projects main goal is to enable people to write and develop EPOC applications using alternative operating systems like Linux and other Unices. It was started in June 2000 because I did not want to run a non-free operating system on my laptop, so I installed Linux on it instead. I also wanted to develop free software for EPOC but the EPOC SDKcould only be installed on Windows. So parts of the toolchain was ported to Unix and the GCC cross compiler for ARM was recompiled to run under Linux. The toolchain mostly consists of (non-free) Perl scripts. Makmake was changed to generate GNU make output instead of the original nmake format. It took about 6 months to have most parts of the ER5 SDK working, which might be along time for a skilled hacker (unlike me:) but I had to learn GNU make, perl and Linux, all at the same time. But it was good fun and also some EPOC projects was created, only by using Linux.

Today (as of 12. Jan 2002) more EPOC SDKs are ported to Linux, which includes ER5, Quartz 6.0 and Nokia 9200 series (based on Crystal 6.0). Most of the focus is now on the 6.x series of SDKs since ER5 is soon to become obsolete. Also the toolchain for ER6 is superior compared to the old ER5, which includes commands like 'bldmake' and 'abld'. More SDKs will be ported as they are released, the Nokia Series 60 SDK was recently release. We are also doing some research on parallel builds to reduce compilation time and adding new features to the toolchain.

Document history

Latest on top.

Version 0.03 (alfredh) 12. October 2002

Version 0.02 (alfredh) 24. July 2002

Version 0.01 (alfredh) 12. January 2002

Contact info

Alfred E. Heggestad <edmund at>
Patrick Regnouf <patrick at>

Mailing list




Thanks go to the following people, in no particular order:

Patrick Regnouf, John Pagonis, Giorgio Bernardi, Jonathan Dixon, Mal Minhas, Andre Howe, Rudi Koenig, Olav Flebbe, Eberhard Mattes, Dave Chapman, Ari Koivisto, Jal Panvel, Alfred E. Heggestad, David Mery, Paul Richards, Tim Baverstock, Hans-Dieter Stich, Malcolm Box.


ARM Advanced Risc Machine, a popular 32 bit cpu core for handhelds
Crystal one of the DFRD's with 640x200 pixels color screen (e.g. Nokia 9210)
Cygwin GNU for Windows, ported by Cygnus and friends
DFRD Device Family Reference Design
EPOC 32 bit operating system developed by Psion and now Symbian Ltd (also called Symbian OS)
ER5 EPOC Release 5
GCC GNU Compiler Collection, formerly refered to as GNU C Compiler
GNU GNU is Not Unix, the free software project started by Richard Stallman
Perl A fantastic scripting language written by Larry Wall
PLP Psion Link Protocol
PPC PowerPC, RISC processor using in e.g. Apple Macintosh.
PPP Point-to-Point Protocol
PVM Parallel Virtual Machine
Quartz One of Symbians DFRDs
SDK Software Development Kit, you need this to develop applications
SMP Symmetric Multi Processing
VIM Vi IMproved, a very popular and free editor (also for EPOC!)
WINE Wine Is Not an Emulator, win32 emulation layer for x386 Unix


This sections describes how to install GnuPoc on your Unix machine.

Installing GnuPoc is not straight forward. Due to the license of the EPOC SDK we are not allowed to redistribute the files in the /epoc32/tools directory. Instead we distribute a patch, called the gnupoc.patch , which can be applied on top of the original /epoc32/tools directory. After patching, it should work OK on most GNU/Linux machines, asuming x86 architecture.

Please keep the original /epoc32/tools directory in case you want to diff them or make patches your self. Also you need the original tools directory if you want to install an upgraded version of the GnuPoc patch.

You also need Wine and GCC crosscompiler for ARM to fully use this SDK on a Linux machine. It also works with the Microsoft compiler CL.EXE, these come with DevStudio.


The distro for ER5 should come with these files:

install.txt Installation instructions
gnupoc.patch.<version> The GnuPoc patch itself
makefile Handy GNU makefile for various things Perl script for copying the EPOC SDK Script for making the SDK Unix friendly



Before you can use it, you must have WINE and arm-pe-gcc up and running on your system, see the readme.txt file for more info. It is very important that all files are lowercased and in Unix format before the patch is applied. Otherwise it will not work.

ER6.x SDKs

These SDKs include Nokia 9210, Quartz and Nokia Series 60 SDK.

The distro should come with these files

readme.txt Documentation
gnupoc.patch.<version> The GnuPoc patch itself
makefile Handy GNU makefile for various things Perl script for copying the EPOC SDK


Additional instructions for the Nokia 9210 SDK

This section was contributed by Dave Chapman (dave at dchapman dot com) as a supplement to the default documentations, and modified slightly by alfredh. Thanks Dave!


A working "Wine" installation is required to install and use the SDK. I use the commercial "Codeweavers Crossover Office 1.1.0", but (possibly with the exception of the actual installation) it should work with a standard Wine installation.

If the installation of the SDK fails under your Wine installation, try installing the SDK on a Windows PC, and then copy the files to Linux.

STEP 1 - Install the SDK

This can be done from either the CD-ROM version of the SDK, or the ZIP file. Both are freely available from have to register to download the ZIP file which contains the SDK version 1.2 and is 237MB in size.,35452,1_32_12,00.html

If using CD-ROM:

  # mount /cdrom
  # cd /cdrom/cpp

If using ZIP file:

  # unzip
  # cd ???/cpp

The subsequent stages are the same for both distributions:

STEP 2 - Copy relevant parts of SDK

Create the final installation directory for GNUPOC. e.g. $HOME/GNUPOC

Then copy (or move) the following directories from the Symbian installation:

  # cd GNUPOC
  # mkdir epoc32-orig
  # cd epoc32-orig
  # mv ~/Symbian/6.0/NokiaCPP/Epoc32/Include .
  # mv ~/Symbian/6.0/NokiaCPP/Epoc32/localisation .
  # mkdir release
  # mv ~/Symbian/6.0/NokiaCPP/Epoc32/release/armi .
  # mv ~/Symbian/6.0/NokiaCPP/Epoc32/release/thumb .
  # cd ..
  # mv ~/Symbian/6.0/Shared/EPOC32/Tools tools_orig
  # cd ..

The above are the minimal amount of files needed. If you wish, you can keep all the files under the "NokiaCPP/Epoc32" directory.

(Optional, but recommended) keep the example files:

  # mv ~/Symbian/6.0/NokiaCPP/Epoc32Ex .
  # mv ~/Symbian/6.0/NokiaCPP/NokiaEx .
  # mv ~/Symbian/6.0/NokiaCPP/UITestSource .

(Optional, but recommended) keep the documentation:

  # mv ~/Symbian/6.0/Shared/EPOC32/Tools tools

You can then delete the "Symbian" directory.

STEP 3 - Install GNUPOC

Uncompress the gnupoc files:

  # tar zxvf gnupoc.9210.patch.009.tar.gz

Unixify the epoc32 directory:

  # epoc32-orig epoc32

[Optional - You can now delete the epoc32-orig directory]

  # rm -fr epoc32-orig

Copy the patch files to the epoc32 directory:

  # cp makefile gnupoc.9210.patch epoc32/

[Optional - Create a backup of the tools directory:]

  # cp -aR epoc32/tools epoc32/tools_orig

Apply the patch:

  # cd epoc32
  # make apply

[With the 1.2 SDK and gnupoc.9210.009.patch file, you will get 4 failures. These don't seem to affect normal operation]

Fix permissions in tools directory:

  # cd tools
  # chmod +x *.pl bldmake abld

STEP 4 - Install the GCC cross-compiler

As user "root":

  # tar zxvf gcc-......
  # cd usr/local
  # mv er6 /usr/local

Create missing "cpp" application. This can just be a link to your existing /usr/bin/cpp: (I am using cpp from gcc 2.95.2)

  # cd /usr/local/er6
  # ln -sf /usr/bin/cpp arm-epoc-pe-cpp

Add the following two lines to your $HOME/.bashrc file:

export EPOCROOT=/home/dave/GNUPOC/
export PATH=$PATH:/usr/local/er6/bin:/home/dave/GNUPOC/epoc32/tools

You must also have "wine" in your path, and a drive mapping that includes the EPOCROOT directory.

STEP 5 - Compile "Hello World"

Note from alfredh: instead of fixing the source code manually, you could use the Perl script instead to do the job for you.
Latest version can always be found in CVS:

First you have to change the source code a bit:

  # cd Epoc32Ex/CrystalUI/HelloWorld
  # mv Bld.inf bld.inf

(GNUPOC expects "bld.inf")

Edit lines 38 and 39 of "HelloWorld.h" as follows to correct file names:

< #include <HelloWorld.rsg>
< #include "HelloWorld.hrh"
> #include <helloworld.rsg>
> #include "helloworld.hrh"

And line 18 of "HelloWorld.rss":

< #include "HelloWorld.hrh"
> #include "helloworld.hrh"

There are similar "inconsistencies" in most of the example applications.

  # bldmake bldfiles
  # abld makefile armi (ignore warning about HelloWorld.rsg)
  # abld target armi urel

If you see "PETRAN" running, then everything has worked. You will find "" and "HelloWorld.rsc" in the following directory:


These can now be installed on the device (e.g. in the 'c:/system/apps/HelloWorld' directory) and tested.

Dave Chapman 23rd July 2002

Sony Ericsson P800 SDK

This section describes how to install the Sony Ericsson P800 SDK and the GnuPoc patch on your Linux machine.

Getting the SDK itself

The first thing you need to do is get the SDK itself either on a CD-rom or directly from the Sony Ericsson developer site. Go here and get it (requires registration)

You can also use GNU wget to download most of these files (does not require registration)

  # wget*

In, total you need to get these zip files:, uiq.z?? and optionally the readme/emulator files. This is around 320 Mb of download.

So far so good. To unpack the multi-part zip files, you need WinZip 8.1. These files can not be unpacked with Info-Zip's unzip yet (as of version 5.50). See

Therefore I went to, downloaded WinZip 8.1 and installed it under WINE. It works quite well, and I managed to unpack all the files.

Installing the SDK

At this stage you should have a Setup.exe and some files and some com.symbian...sdkpkg files. I tried to install this with WINE (wine Setup.exe) but that did not work. You dont need the CAB files so here is what you have to do; First unpack the sdkpkg files using unzip

  # for n in `find . -iname "*.sdkpkg"`; do unzip -n $n -d out ; done

You should now have the following sub-directories and files in the 'out' directory:

alfredh@tellus:~/downloads/p800_sdk_unzipped/out$ l
total 36
drwxrwxr-x    6 alfredh  people       4096 Oct  9 09:32 .
drwxr-xr-x   10 alfredh  people      12288 Oct  9 09:46 ..
drwxrwxr-x    7 alfredh  people       4096 Oct  9 09:31 [emul]
drwxrwxr-x    3 alfredh  people       4096 Oct  9 09:31 [meta]
drwxrwxr-x    3 alfredh  people       4096 Oct  9 09:31 [sdkroot]
drwxrwxr-x    3 alfredh  people       4096 Oct  9 09:32 [tools-classes]
-rw-rw-r--    1 alfredh  people       1379 Jul 12 17:13 package.xml

You can throw away the [meta] and the [tools-classes] directories, we are only interrested in the [emul] and [sdkroot] directories. The former contains the stuff we want and the latter contains some optional examples.

Note from alfredh to myself Already at this point I begin to understand how difficult and troublesome it is to install this SDK on GNU/Linux. And the challenge is yet to come! In the Debian world, which I now live happily in, I would have done 'apt-get install p800sdk' and it was ready to go. Remind me later to do this.

Before we can move on we need to make sure all files and directories are located in the right place and have the right case and so on. The most useful Perl script will do most of this job. Run this Perl script on at least the EPOC32/epoc32 directory, optionally on the Example and UIQExamples directories. Remember to set the EPOCROOT environment variable before running, it is recommended to set the EPOCROOT to /epoc/p800cpp to unify the directory structure. A useful bash script sdk in CVS/scripts can be used for selection between multiple SDKs on the same system. After doing this, you should have a directory structure that looks something like this:

alfredh@tellus:/epoc/p800cpp$ l
total 32
drwxrwxr-x    8 alfredh  people       4096 Oct  9 10:36 .
drwxrwxrwx   15 root     root         4096 Oct  9 10:21 ..
drwxrwxr-x    6 alfredh  people       4096 Oct  9 09:27 Documentation
drwxrwxr-x   15 alfredh  people       4096 Oct  9 09:31 Examples
drwxrwxr-x   12 alfredh  people       4096 Oct  9 09:31 UIQExamples
drwxrwxr-x   13 alfredh  people       4096 Oct  9 10:34 epoc32

Applying the patch

This procedure is similar to the other SDKs, you unpack the tarball to the $EPOCROOT/epoc32 directory and run 'make apply'. That should be it. It should be noted that the bash and Perl scripts under epoc32/tools must be executable, and that all files in this directory must be lowercase.

  # cd /epoc/p800cpp/epoc32
  # tar -xzvf gnupoc.p800cpp.patch.<version>.tar.gz
  # make apply

Now you should be able to build your project, simply go to the directory where the 'bld.inf' file is located and do 'bldmake bldfiles'. It is also expected that you will run into problems, but please do not give up so easily. If something goes wrong, try to understand what the problem is, and try to debug it. Any feedback to me is welcome.

Happy hacking :)


This section describes how to configure the toolchain and the environment to work properly.

Mandatory environment variables

The following environment variables need to be set:

Various scripts comes with the GnuPoc package to help choose between multiple installed SDKS and configuring these environment variables correctly.

Optional environment variables

The following environment variables is optional, each with a special meaning:

WINE config

For x86 .exe programs to run correcly (petran.exe, rcomp.exe) you must also include the root of the SDK in the WINE configuration file. This normally resides under the users home directory and is called ~/.wine/config


[Drive H]
"Path" = "/epoc/er5cpp"
"Type" = "network"
"Label" = "ER5 SDK"
"Filesystem" = "win95"

[Drive I]
"Path" = "/epoc/n9210cpp"
"Type" = "network"
"Label" = "Nokia 9210 SDK"
"Filesystem" = "win95"

Using GnuPoc

Using GnuPoc on Unix is very similar to the original SDK, except that there is no Developer Studio for Unix, most of the time is spent using the commandline. One of the design goals is to provide as much compatibility with the original SDK as possible. Let us consider a small example called 'hellu' with the following tree structure

/hellu/group/blf.inf \\
       group/hellu.mmp \\
       src/hellu.cpp \\

The bld.inf file contains build information about the project, for example which platforms are supported and a list of .mmp files. The hellu.mmp is the toplevel project file for hellu.exe and contains a list of which cpp files to use, etc. The source file hellu.cpp is the only source file in this project and contains some very simple code.

To start building the project, go to the group directory and type 'bldmake bldfiles'

  # cd /hellu/group
  # bldmake bldfiles

This will generate the necessary makefile in the $EPOCROOT/epoc32/build/... directory which are used later to generate makefiles, export header files, build the code and so on.If you update a .cpp or .h file it should not be necessary to do this again, only if you update the bld.inf file. This of almost like ./configure in most Unix programs. Adding the option -v after bldmake gives increased verbosity.

To create makefiles (GNU makefiles) do the following, still in group dir:

  # abld makefile armi

where armi specifies the platform to build for. abld without arguments gives a list of available platforms. Also here you can add the -v flag after abld to get verbose output.

NOTE! Unlike the original SDK, we do not generate the ABLD.BAT (or abld) file in the current directory. Instead a bash script file called 'abld' is always located in the $EPOCROOT/epoc32/tools directory which does the same thing. This improves this SDK a little since no files are created in your project directory :)

To build the code using the newly created makefile:

  # abld target armi urel

where armi is the platform and urel is the build variant (udeb=unicode debug, urel=unicode release). This should compile all the code and create a file called hellu.exe in the $EPOCROOT/epoc32/release/armi/urel directory. Transfer it to your EPOC device and see if it works...

Other things you can do:

  # abld export       # export files given in bld.inf under PRJ_EXPORT
  # abld clean        # clean temporary files
  # abld reallyclean  # clean everything

Supported platforms

This section has some information about which SDKs are supported and which SDK you should choose for your EPOC device.

The following SDKs are ported to GnuPoc :

Connectivity solutions

This section describes how to connect your Unix machine to your EPOC device and send files and IP packets between them.


For ER5 machines (Psion Series 5, netBook, Osaris, etc) we can recommend the plptools program. It implements the PLP protocol (Psion Link Protocol) which is built into all ER5 machines. A serial cable or infra-red can be used to connect the EPOC machine to your Unix box.

We recommend mounting on the default path /mnt/psion because then you should be able to use most makefiles with the target install without modifications.

This is how it looks like when you do ls -al /mnt/psion

# ls -al /mnt/psion
total 7
dr-x------    6 alfredh  alfredh       512 Jan 12 17:37 .
drwxr-xr-x   19 root     root         4096 Jan  6 16:23 ..
drwx------   30 alfredh  alfredh       512 Jan 12 20:52 C:
drwx------   14 alfredh  alfredh       512 Jan 12 20:52 D:
drwx------    8 alfredh  alfredh       512 Jan 12 20:52 proc
dr-x------    3 alfredh  alfredh       512 Jan 12 20:52 Z:

We also recommend mounting the device as your username, not as root. This is done by specifying this argument to

daemon /usr/sbin/plpnfsd -u alfredh

A shell script file called psion comes with the plptools package and is normally located in /etc/rc.d/init.d/ (Red Hat) or /etc/init.d/ (Debian)


The main difference between PLP for ER5 and ER6 is that ER5 is ASCII and ER6 is Unicode, hence all file names must be handled differently. I started porting plptools to ER6 but gave up when I found another nice program by Rudi Koenig called p3nfs, which also mounts the EPOC device as a NFS share in Unix, but is using its own protocol between the EPOC device and the Unix box. In my opinion p3nfs is simpler but faster than PLP. If you want to know how far I got with porting plptools to ER6, you can download the source code from here

We recommend mounting the ER6 device as /mnt/nokia due to consistency with makefiles for installing programs on the device. Same as plptools, it is best to mount the device as your user instead of root.

This command will mount a Nokia 9210 to serial port 1 with baudrate 115200 kbit/s as the user alfredh.

/usr/bin/p3nfsd -tty /dev/ttyS0 -series5 -oldnfsc -speed 115200 -dir /mnt/nokia -noflow -user alfredh

Before starting the p3nfsd daemon on the Unix side you must also start the program on the ER6 device, called nfsclient. Now, the question is, how do you transfer this program to the 9210 in the first place? Some options:

A similar shell script to plptools's psion also exist for p3nfs, which in my case is called nokia . Major parts of it looks like this and is located in the /etc/rc.d/init.d directory (Red Hat)

case "$1" in
	echo -n "Starting Nokia support: "
	daemon /usr/bin/p3nfsd -tty /dev/ttyS0 -series5 -oldnfsc -speed 115200 -dir /mnt/nokia -noflow -user alfredh 
	touch /var/lock/subsys/nokia
	echo -n "Shutting down Nokia support: "
	ls /mnt/nokia/exit
	rm -f /var/lock/subsys/nokia

The nfsclient program on the EPOC device also supports autoexecution of .exe files, this is very handy for development. If you are developing a .exe program on Unix, using GnuPoc or other EPOC SDKs for Unix, you can improve the development cycle drastically by using makefiles for automation. Example:

# Makefile for snus project

all: $(TARGET)

install: $(TARGET)
	cp -f $(TARGET) $(INSTALL)

	abld -v build armi udeb

This makefile should be located in your projects root directory. When the device is connected to your Unix box and you want to compile and test your code, all you have to type is make install. What will happen then is:

Reducing the build time

One of the advantages of running GCC on Unix is that there are no extra emulation layers, unlike Cygwin on Windows. We do not have any benchmarking results yet, but in practice the toolchain is faster and more responsive on Unix (read: Linux). This includes the Perl scripts, gcc, ld and execution of win32 binaries under wine. If the win32-only binaries were ported to Unix we could improve build time even more, by removing the wine layer. However, only a small fraction of time is spent executing win32 binaries and also wine is pretty fast these days.

No matter how fast we can build the code, we will always try to improve the build times. Some of the things that could be done are:

Internet access with pppd

This section describes how to setup your Unix box as a PPP server and how to enable internet connectivity for EPOC devices.

If you are developing internet applications for EPOC and you want to get internet access, you probably dont want to dial out with a modem and spend hundreds of dollars during development. A much cheaper, faster and robust solution is to connect your EPOC device either via serial cable or infra-red to your Unix box, and start the pppd (PPP server) on the Unix machine.

Unix box configuration

The first thing you have to do is write the ppp scripts that pppd will use, a good example can be this script, located in /etc/ppp/peers/psion directory:

# /etc/ppp/peers/psion
crtscts lock passive persist silent  
local proxyarp  
netmask # or anything else 


noauth Do not require the peer to authenticate itself.
/dev/ttyS1 The serial port to use, in this case COM2
115200 Which baudrate to use, 115200 kbit/s is max for standard PCs
persist Do not exit after a connection is terminated; instead try to reopen the connection
passive Wait for LCP packets from EPOC device
lock Lock the serial port
crtscts Use hardware flow control (RTS/CTS) Most ER5 devices have this, but not the Nokia 9210
local Ignore the CD (Carrier Detect) signal
proxyarp Add the IP adress of EPOC device to the ARP table, so it becomes visible on the net
netmask This is our private subnet Local:Remote adress (Remote is EPOC device)
ms-dns IP adress of the DNS server

Now you can try to start the PPP server by typing (as root):

# pppd call psion

You should be able to see the activity of pppd in the syslog ( /var/log/messages ) To check that the server is still running:

# ps awx | grep pppd

To kill the server:

# killall pppd

Please note that you can not run plptools and PPP server at the same time, on the same serial port.

EPOC device configuration

Now let us configure the EPOC device, in this example a Psion netBook (ER5):

Test the connection by starting your favourite Web browser (Opera?) and go to You should get a dialog box, then select the new ISP we just defined. Remember that you have to disable PLP locally aswell, try Ctrl-L to disble it.

For ER6 devices it should be similar procedure but I have not tried with Nokia 9210 yet. If anyone has more info please send it to us.

Other related projects Rudi Koeniglich's SDK for Linux Olaf Flebbe's SDK for Linux XSdk for Linux and Mac

Compatibility section

This section describes the various programs that are needed for GnuPoc and which version of them we recommend. GnuPoc might also work with versions of programs that are not on this list. If you find any other versions of programs that work on your system, please send the information to us, see the Contact Info section.


Most recent versions of WINE work with GnuPoc . If you want to install a userfriendly version of WINE quickly, we can recommend the version from CodeWeavers. We can also recommend compiling the source from scratch or perhaps the Debian version.

This list indicates which versions you can use for GnuPoc : (latest on top)

wine-20020605 (compiled from source) OK
Debian wine 0.0.20020411-1 in woody OK except aiftool.exe
wine-20020310 (Codeweavers Crossover Office 1.1.0) OK - setup.exe also works :)
wine-20011108 (petran does not work)
codeweavers-wine-20010626-4.rpm OK
wine-20010510-1 OK
codeweavers-wine-20010112-1.rpm OK Wine headquarters Weavers

Type 'wine -v' or 'rpm -q wine' to get the version number.

Type 'apt-get install wine wine-utils winesetuptk' if you are using Debian GNU/Linux.


Perl is needed by makmake, abld, bldmake and the rest of the toolchain, which is mostly written in Perl. The original version requires Perl version XXX, so we suggest you stick to that version or a later one. This list indicates which versions of Perl you can use for GnuPoc :

Perl v5.6.1 (Debian 5.6.1-7) OK
perl-5.6.0-12.rpm OK
Perl v5.6.0 OK Perl homepage

Type 'perl -v' or 'rpm -q perl' to get the version number.

Type 'apt-get install perl' if you want to install it on a Debian GNU/Linux system. (you probably already have it installed:)


GNU Make versions that are working with GnuPoc :

Debian GNU make 3.79.1-14 OK
GNU Make version 3.79.1 OK
make-3.79.1-5.rpm OK GNU Make homepage

Type 'apt-get install make' if you want to install it on a Debian GNU/Linux system. (you probably already have it installed:)


The native version of GCC is only used for the LINS variant. For the ARM cross compiler there are two main versions, one for ER5 and one for ER6 and later. They should be compatible, if you want you can try to compile ER5 binaries with the ER6 compiler and see if they run on any ER5 hardware (Psion Series 5mx, etc)


gcc 3.02 OK
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96.81) OK
gcc-2.96-81.rpm OK
gcc 2.95.2 (SUSE 7.1) OK


arm-pe-gcc: gcc driver version cygnus-2.7.2-960323 (Psion GCC tools v113

Type 'arm-pe-gcc -v' to get version number.


arm-epoc-pe-gcc version 2.9-psion-98r2 (Symbian build 539)

Type 'arm-epoc-pe-gcc -v' to get version number. GCC homepage


Working versions of bash:

bash-2.05a-11 for Debian GNU/Linux OK
bash 2.04.0(1)-release (SUSE 7.1) OK
GNU bash, version 2.04.21(1)-release bash-2.04-21.rpm OK


patch version 2.5.4 works
patch version 2.5.3 works (SUSE 7.1)

GNU/Linux Distributions

OS kernels

CPU Architecures

Only tested OK on Intel Pentium II and III so far

Quickly tested on a PowerMac 8200, my notes are in CVS here:

Projects using GnuPoc Shoot-em-up game by Kenny Guy E32Frodo Commodore 64 emulator for Epoc Esidplay Commodore 64 SID tune player for Epoc Vi Improved editor for Epoc

External links PLP tools homepage p3nfs homepage Symbian homepage Symbian developer network homepage Nokia homepage Nokia developer homepage Nokia U.S. developer homepage Wine headquarters Code Weavers

Toolchain internals

This section describes how the toolchains work internally and which files does what in the build process.

Additional chapters to be written



Debugging techiques

TODO - emxpanic, file logging, etc...



File format converters


EPOC abstraction layer for Linux


The future of GnuPoc



About this document ...

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.47)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 gnupoc_howto.tex

The translation was initiated by Alfred E. Heggestad on 2005-02-08

next_inactive up previous
Alfred E. Heggestad 2005-02-08