Overview of the Compilation system
16 Jan 2003 - 00:00

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 :

compilationsystem_-_small.png

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

Tutorial posted January 16th, 2003 by eric

Submitted by jobs li (not verified) on Mon, 2003-03-03 11:53.

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


Submitted by BenK (not verified) on Mon, 2003-03-03 13:52.

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...


Submitted by Christian Halbach (not verified) on Wed, 2005-02-16 12:33.

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.


Submitted by Christian Halbach (not verified) on Wed, 2005-02-16 12:36.

By the way: I'm on Windows XP and generating batch files worked before setting the epocroot variable.

Submitted by RobertS (not verified) on Wed, 2005-06-22 09:22.

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...


Submitted by Irfan (not verified) on Tue, 2003-03-04 06:48.

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


Submitted by webmaster (not verified) on Tue, 2003-03-04 09:06.

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.


Submitted by SJ314 (not verified) on Thu, 2003-03-13 21:33.

Under XP/W2K/NT you can setup permanent Environment variables by:
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

Submitted by Anonymous on Tue, 2003-07-08 13:21.

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


Submitted by Anonymous on Fri, 2004-01-30 18:25.

add below path to your PATH enviroment variables:(control panel->system->enviroment variables") "Microsoft Visual Studio\VC98\Bin" nmake is a tool for VC6

Submitted by Eric@NewLC (not verified) on Thu, 2003-04-24 13:09.

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


Submitted by Anonymous on Mon, 2003-08-25 11:54.

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 !!!


Submitted by Vignesh (not verified) on Fri, 2004-07-16 08:25.

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


Submitted by Anonymous on Tue, 2004-07-20 11:06.

were you able to find a solution to this. i am facing the same problem please post the solution here if possible

Submitted by Richa (not verified) on Tue, 2004-07-20 11:41.

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



copyright 2003-2009 NewLC SARL