|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-6025A68F-625B-570A-87D7-2C11E66044D4" xml:lang="en"><title>Build |
|
13 FAQ</title><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
14 <p>This page gives some quick answers to problems and issues you may encounter |
|
15 when building code. </p> |
|
16 <p><b>Why do applications build to the Symbian Emulator's Z: drive? </b> </p> |
|
17 <p>The build tools were originally designed for building ROM-based applications, |
|
18 and so assume that applications should be placed in the emulated ROM area |
|
19 (i.e. <filepath>epoc32\release\winscw\udeb\ or urel\</filepath>). Third party |
|
20 applications intended to loaded on disk are also built to this location, but |
|
21 this doesn't mean they can only be installed in ROM or have any other impact |
|
22 on them. (Note that your code should not assume that it will be installed |
|
23 on any particular drive, as this is choice is best left to the user). </p> |
|
24 <p><b>Why does abld makefile give a WARNING: Can't find following headers |
|
25 in System Include Path message, even though I export the header(s) in my bld.inf? </b> </p> |
|
26 <p>You can specify that headers from your project should be copied into the |
|
27 system headers directory, <filepath>epoc32\include</filepath>, by using a <xref href="GUID-3A05CD69-0AB6-5549-B18A-842F49C06874.dita">prj_exports</xref> statement |
|
28 in the <filepath>bld.inf</filepath> file. The header is not actually copied |
|
29 though until an <systemoutput>abld export</systemoutput> command, or a command |
|
30 that calls this, such as <systemoutput>abld build</systemoutput> is executed. |
|
31 The solution is to call <systemoutput>abld export</systemoutput> before <codeph>abld |
|
32 makefile</codeph>. </p> |
|
33 <p><b>What Symbian platform tools can I cause to be invoked through a project |
|
34 file keywords? </b> </p> |
|
35 <p>The chief purpose of a project (<filepath>.mmp</filepath>) file is to specify |
|
36 the source files and options to pass to the appropriate compiler toolchain |
|
37 for the platform. In many cases though, you will want to create a number of |
|
38 additional, Symbian platform-specific, support files as part of the project |
|
39 build. You can invoke the tools to create such files by specifying a number |
|
40 of project file keywords: </p> |
|
41 <ul> |
|
42 <li id="GUID-333315F5-A398-558A-AA84-9D4DBAE692E7"><p><xref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita">start |
|
43 resource</xref> to compile resource files </p> </li> |
|
44 <li id="GUID-D5B552A6-7FA8-5355-BEA5-1292982FD8F2"><p><xref href="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita">start |
|
45 bitmap</xref> to compile multi-bitmap files. </p> </li> |
|
46 </ul> |
|
47 <p>Of the other commonly used Symbian platform tools, the project file does |
|
48 not specify keywords that invoke the: </p> |
|
49 <ul> |
|
50 <li id="GUID-9F52256D-11AD-5074-8F33-F3570E32686A"><p><xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita">Installation |
|
51 File Generator</xref> (<filepath>makesis</filepath>) </p> </li> |
|
52 <li id="GUID-905AD8FA-29DE-5DE1-85FA-D22C64658C5A"><p><xref href="GUID-3170F958-137A-5DD5-A6DD-D5474ABECD22.dita">Certification |
|
53 Generator</xref> (<filepath>makekeys</filepath>) </p> </li> |
|
54 <li id="GUID-DB06BD93-6521-5B4F-BFEB-72235B396200"><p><b>Context |
|
55 Sensitive Help Compiler</b> (<filepath>cshlpcmp</filepath>)</p></li> |
|
56 </ul> |
|
57 <p>Note though you can invoke these, and any other tools, through <xref href="GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita">extension |
|
58 makefiles</xref>. </p> |
|
59 <p><b>What are edll.obj and eexe.obj? </b> </p> |
|
60 <p>The build process builds into each <filepath>.exe</filepath> file a small |
|
61 object file, <filepath>eexe.lib</filepath>, which contains a small amount |
|
62 of code to manage process startup. Similiarly, each DLL has an object file <filepath>edll.lib</filepath> built |
|
63 into it. </p> |
|
64 <p><b>Why does the build give a message diff: <file-path-and-name>: No |
|
65 such file or directory? </b> </p> |
|
66 <p>This message appears when building a project's resource or multi-bitmap |
|
67 file for the first time. It can be ignored. </p> |
|
68 <p><b>Why do I get a LNK2001: unresolved external symbol __chkstk error? </b> </p> |
|
69 <p>The program exceeds the stack space available, e.g. by creating a large <codeph>TBuf</codeph> on |
|
70 the stack. The solution is to reduce the use of stack space by using the heap |
|
71 appropriately. </p> |
|
72 <p><b>How can I change the libraries for a project open in an IDE? </b> </p> |
|
73 <p>To change a project's libraries, you should edit the <filepath>.mmp</filepath> file's <xref href="GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita">library</xref> statement |
|
74 as normal, and then regenerate the IDE workspace using <systemoutput>abld |
|
75 makefile</systemoutput>. </p> |
|
76 <p><b>Where are the .lib files for ARM debug builds? </b> </p> |
|
77 <p>The <filepath>.lib</filepath> files required for ARM debug builds are identical |
|
78 to those for release builds, so the build tools use a single copy of the libs |
|
79 in the <filepath>urel</filepath> directory. </p> |
|
80 <p><b>Why do I get an error from petran when I build for ARM, when the WINS/WINSCW |
|
81 build is fine? </b> </p> |
|
82 <p> <filepath>petran</filepath> is a tool that is invoked only at the final |
|
83 stage of the build process for ARM targets. It will give an error if you build |
|
84 a DLL that contains writeable static data. See <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static |
|
85 data</xref> for more information. </p> |
|
86 </conbody></concept> |