Overview of the Compilation system
Several tools are involved in the compilation toolchain. This article will only present the basic tools to compile a simple application (this should work for both Series 60 and UIQ environment).
Command line tools
The first tool involved is bldmake: this tools is typically used to generate the command file that you will use to compile and link your application (abld). Bldmakerequires the bld.inf file to do this [1].
The abld.bat file is the key entry point for compiling your application :

Depending of the parameters you will pass to the abld command, you will generate: a Visual C++ workspace and project file (abld makefile vc6), a Windows emulator application (abld build wins udeb) or a target phone application (abld build thumb urel).
The parameters value vc6 and wins are quite straightforward to understand (vc6 = Visual C++ 6, wins = Windows). Udeb means "Unicode - Debug" and Urel stands for "Unicode - Release". Unicode indicates a character coding scheme (a little bit like ASCII but Unicode character coding allows exotic character to be coded). Debug means you will generate Debug information for your application (this is probably the case for the Emulator version) and Release that the Debug information will not be included (this is probably the case for the target executable).
ARMI vs ARM4 vs THUMB
Current ARM processors (at least ARM7 and ARM9) have two instruction sets:
one with instructions on 32 bits which is ARM4
one 16 bits instructions which is THUMB
ARM4 mode has a slightly richer instruction set. THUMB mode is more compact. A general rule is that program compiled in THUMB mode are smaller than program compiled in ARM4 mode. And program compiled in ARM4 are faster.
However, this may not be true for all mobiles, depending on their hardware architecture. As a matter of fact, most mobile phones have a 16 bit memory bus, and then use THUMB mode. In that particular case, a THUMB mode program is generally smaller and quicker because one memory access is enough to fetch an instruction.
ARMI stands for ARM Intermediate. This is the safest choice to use since ARMI program can be linked with THUMB or ARM4 libraries while THUMB compiled code can only be linked with THUMB code and ARM4 code with ARM4 code.
[1] the bld.inf file in this case is just a list of .mmp files






> Overview of the Compilation system
Hi,
can you provide an instruction on the procedure after an application was done on PC with vc6/epoc simulator?
i list my current questions below:
1. how to convert .app format to real product format? 2. how to get a UID? is it necessary? 3. how will the user download the application into his phone, e.g., 7650? 4. through what kind of channel where can i distribute my application?
thanks in advance, jobs li
Re:> Overview of the Compilation system
1. The format for the real product is a SIS file. This is generated using makesis and a pkg file describing your package (this file can be generated by the Series60 Application wizard). Assuming you are using Series60 SDK and Series60 Application wizard:
compile for ARM target in THUMB mode
(abld build thumb urel)
go to the install directory of your project, and create the SIS file using makesis
(makesis <myproject>.pkg)
2. You have to ask them to Symbian by emailing to uid@symbiandevnet.com. However it looks like it is not an automated procedure and it take some times for Symbian to answer. This is necessary if you distribute your application.
3.The simplest is by using Nokia PC Suite software and an infrared connection
4. You can use several channels:
you can submit your software to this site in the software section (but no payment can be handled yet).
you can submit it to other symbian related sites (the best known being my-symbian.com) or more generically handango.com (the later being used by my-symbian.com anyway).
if you are a company, you can contact the Nokia OK program...
> Overview of the Compilation system
Hey, I'm experiencing the "EPOROOT variable must be capitalised" problem as well.
Searched the internet and tried everything.
1. Set variable via Windows and DOS to \Symbian\7.0s\Series60_v21\ 2. Included system32 in the path: c:\WINDOWS32\system32\
Can anyone help? Thanks.
> Overview of the Compilation system
> Overview of the Compilation system
This EPOCROOT everyone is talking about here has nothing to do with the PATH. You have to set the EPOCROOT environment variable using capital letters. Example:
set EPOCROOT=foobartodayoryesterday
And not:
set epocroot=foobartodayoryesterday
The first setting of the environment variable decides its name, so if you do:
set epocroot=foobartodayoryesterday set EPOCROOT=foobartodayoryesterday
...you are still toasted until you unset the environment variable with:
set EPOCROOT=
But then again, newer SDK:s appears not to require the EPOCROOT setting...
How to set the path
Hi ya, Iam trying to develop some application in symbina os using c++, i success fully build bldfiles and while doing abld makefile vc6, iam getting error as "nmake is not recognised as internal or external command". It might be problem with my path settings. can any one help me?
Thank you. Irfan
Re:> Overview of the Compilation system
Just call vcvars32.bat that is present in C:\Program Files\Microsoft Visual Studio\VC98\Bin
This will set the path so that nmake is visible from the command line.
> Re:> Overview of the Compilation system
1. WinKey+Pause -> got Control Panel/System
2. click Advanced, Environment Variables
3. create/update variables path, include, lib you can take values from vcvars32.bat
> How to set the path
if u install vc6 in default directory, then in command prompt go to the directory C:\Program Files\Microsoft Visual Studio\VC98\Bin
type vcvars32
it will initialize vc settings then u can build
> How to set the path
> What's the diference btw. exe and app ?
EXE is a shell executable. It does not have a GUI and then is independant from any UI environment (Nokia Series 60 / UIQ or others). It is useful to test server and other pieces of "middleware".
APP is an application (a polymorphic DLL with a single entry point from the OS point ov view) and depends of the GUI system.
Cannot help on the "Security" issue...
Cheers, Eric
> What's the diference btw. exe and app ?
Do you wanna know why can't you execute exe file ??
Read this:
http://www.newlc.com/article.php3?id_article=143
Great job guys !! Definitly, this's my bible for developing in Symbian !!!
> Overview of the Compilation system
Hi, i still have same error. Do anyone have solved this problem. Please help me immediately.
NMAKE : fatal error U1077: 'perl' : return code '0x9'
thanks in advance
vignesh p
> Overview of the Compilation system
> Overview of the Compilation system
hi finally found the solution to the problem
edit the perl file epocrc.pl line no: 156 and remove the '< ' sign
$cpp_spec .= "<\"$sourcefile\"";
changes to
$cpp_spec .= "\"$sourcefile\"";
Found the solution at lists.helixcommunity.org/pipermail/ helix-client-dev/2004-January/001378.html