Symbian3/SDK/Source/GUID-6025A68F-625B-570A-87D7-2C11E66044D4.dita
changeset 13 48780e181b38
parent 12 80ef3a206772
child 14 578be2adaf3e
equal deleted inserted replaced
12:80ef3a206772 13:48780e181b38
     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: &lt;file-path-and-name&gt;: 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>