The C++ SDK from symbian is hosted on Microsoft Windows. It is using the cygnus toolchain which is a GNU product. The gcc and the binutils in this SDK are used to create a PE (i.e. windows) executable which is converted with a tool petran.exe from symbian. Using the cygnus toolchain for the arm-pe target on Linux and some tweaking of the SDK one can get a useable platform for compiling code for the psion.
This SDK has many rough edgdes, please use it at your own risk. You will find more hints for using and compiling it on http://www.koeniglich.de
For additional information, and port to recent releases of the symbian os please have a look at the gnupoc project at http://gnupoc.sourceforge.net.
Installing the Linux SDK: (You may download it in ASCII FORMAT)
Unpack linux-sdk-cygnus-2.7.x.tgz:
cd / ; tar zxvf linux-sdk-cygnus-2.7.x.tgz
Mount the SDK CDROM or the installed EPOC SDK and copy it to your Linux system:
perl copysdk /cdrom ~/epoc
Configure wine, that it is possible to call petran.
I examined to output of the makmake scripts for determing the correct flags and commands when I compiled perl.exe for the psion5:
arm-pe-gcc -B/usr/local/lib/gcc-lib/arm-pe/cygnus-2.7.2-960323/ -c -O -fomit-frame-pointer -DNDEBUG -nostdinc -Wno-ctor-dtor-privacy -mcpu-arm710 -mapcs-32 -mshort-load-bytes -msoft-float -fcheck-new -fvtable-thunks -D__SYMBIAN32__ -D__PSISOFT32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__EXE__ -I ~/epoc/include/ -I ~/epoc/include/libc *.c
arm-pe-ld -s -e _E32Startup --base-file perl.bas -o perlpe.exe ~/epoc/lib/eexe.o *.o ~/epoc/lib/ecrt0.o ~/epoc/lib/estlib.lib ~/epoc/lib/euser.lib
arm-pe-dlltool --as=arm-pe-as --output-exp perl.exp --base-file perl.bas ~/epoc/lib/eexe.o *.o ~/epoc/lib/ecrt0.o ~/epoc/lib/estlib.lib ~/epoc/lib/euser.lib
arm-pe-ld -s -e _E32Startup -o perlpe.exe perl.exp ~/epoc/lib/eexe.o *.o ~/epoc/lib/ecrt0.o ~/epoc/lib/estlib.lib ~/epoc/lib/euser.lib
wine "$HOME/epoc/bin/petran.exe perlpe.exe perl.exe -nocall -heap 0x00000400 0x00200000 -stack 0x0000c000 -uid1 0x1000007a -uid2 0x100051d8 -uid3 0x00000000"