RAD Studio (Common)
ContentsIndex
PreviousUpNext
C++ Linker Output

ProjectOptionsC++ Linker Output 

Use this dialog box to set C++ Linker Output options.

Build Configuration options 
Description 
Build Configuration 
Displays the name of the current build configuration associated with the options on this page. There are three default build configurations: Base, Debug, and Release.  
Apply Options... 
Displays the Apply Option Set dialog box to apply the options in a named option set to the current configuration.  

 

Common items 
Description 
Value from <parent configuration or option set> 
Indicates the value in the parent build configuration or referenced option set. If you change this value here, the change will potentially affect the Base configuration (that is, if you click OK on the Project->Options dialog and subsequently build your project).  
Inherit 
Indicates whether inheritance (from a parent configuration) is on or off for the option. To control inheritance, click the option, and then open the associated generic list dialog box by clicking the Ellipsis that appears. The Inherit values from parent configuration checkbox controls whether your current build configuration inherits the values listed in the lower box of the generic list dialog box.  
<any item in red print> 
Indicates that this option has secondary options available. To view the secondary options, click the + sign in front of the option in red.  
<any item in boldface print> 
Indicates that the value of this option has been changed from the value in the parent configuration or referenced option set.  
Down Arrow Pop-Up Button 
Appears after you click an option that has a set of available choices (such as True, False). Click Down Arrow to display and choose the value you want from the available choices.  
Ellipsis Pop-Up Button 
Appears after you click an option whose value is either of the following:
  • An ordered list that you enter and then arrange in the desired order, such as a list of defines or search paths. Clicking Ellipsisinvokes the generic ordered list dialog box.
  • A single filename, directory or folder name. Clicking Ellipsis invokes the standard Open file or Browse for folder dialog box.
 

 

Map File options 
Description 
Base address (-b) 
Specifies image base address for your executable or DLL. The load address of the first object in the application or library is set to the number you specify, if possible, and all successive objects are aligned on 64K linear address boundaries; internal fixups are ignored. However, if the module cannot be loaded using the specified address, the operating system reverts to its default setting and applies internal fixups. Preserve relocation table. Specify value in hex or decimal on 0x200 or 512 byte boundaries. Default value = 0x00400000  
Heap size, maximum (-H) 
Specifies the size of the reserved heap in hexadecimal or decimal. The minimum allowable value for this field is 0.
Specifying the reserved heap size here overrides any HEAPSIZE setting in a module definition file.
Default value = 0x00100000  
Heap size, minimum (-Hc) 
Specifies the size of the committed heap in hexadecimal or decimal. The minimum allowable value for this field is 0 and any value specified must be equal to or less than the Reserved Heap Size setting (-H).
Specifying the committed heap size here overrides any HEAPSIZE setting in a module definition file.
Default value = 0x00001000  
Image comment string (-GC) 
Specifies comments to be inserted into the image (.exe, .dll, .bpl, and so forth) directly after the object table in the PE file header. These comments can be read out of the image with TDump or similar tools.  
Image description (-D) 
Saves the specified description in the PE image.  
Image flags (-GF) 
Allows you to set several flags on the image. The following flags are supported:
-GF:SWAPNET
-GF:SWAPCD
-GF:UNIPROCESSOR
-GF:LARGEADDRESSAWARE
-GF:AGGRESSIVE
SWAPNET tells the OS to copy the image to a local swap file and run it from there if the image resides on a network drive.
SWAPCD tells the OS to copy the image to a local swap file and run it from there if the image resides on removable media (for example, CD, floppy, USB memory stick).
UNIPROCESSOR tells the OS that this application cannot run on a multiprocessor system.
LARGEADDRESSAWARE tells the OS that the application understands addresses bigger than 4G.
AGGRESSIVE permits the OS to aggressively trim the working set of an application when the application is idle. This is ideal for screen savers and other processes that wish to stay out of the way of main line processes as much as possible.
Default value = None
See the description of the Ellipsis pop-up button, above.  
Map file type 
Map file with segments *
Includes only segments in the map file. Happens when none of —m,s, or —x is specified. This is the default.
Map file with publics (-m)
Instructs the linker to produce a map file that contains an overview of the application segments and two listings of the public symbols.
The segments listing has a line for each segment showing the segment starting address, segment length, segment name, and the segment class.
The public symbols are broken down into two lists, the first showing the symbols in sorted alphabetically, the second showing the symbols in increasing address order. Symbols with absolute addresses are tagged Abs.
A list of public symbols is useful when debugging: many debuggers use public symbols, which lets you refer to symbolic addresses while debugging.
Detailed segment map (-s)
Creates the most comprehensive map file by adding a detailed map of segments to the map file created with the Publics option (-m). The detailed list of segments contains the segment class, the segment name, the segment group, the segment module, and the segment ACBP information. If the same segment appears in more than one module, each module appears as a separate line.
The ACBP field encodes the A (alignment), C (combination), and B (big) attributes into a set of four bit fields, as defined by Intel. ILINK32 uses only three of the fields: A, C, and B. The ACBP value in the map is printed in hexadecimal. The following field values must be ORed together to arrive at the ACBP value printed.
Field — Value — Description
A (alignment) — 00 — An absolute segment
— 20 — A byte-aligned segment
— 40 — A word-aligned segment
— 60 — A paragraph-aligned segment
— 80 — A page-aligned segment
— A0 — An unnamed absolute portion of storage

C (combination) — 00 — Cannot be combined
— 08 — A public combining segment
B (big) — 00 — Segment less than 64K
— 02 — Segment exactly 64K
With the Segments options set, public symbols with no references are flagged idle. An idle symbol is a publicly defined symbol in a module that was not referenced by an EXTDEF record or by any other module included in the link. For example, this fragment from the public symbol section of a map file indicates that symbols Symbol1 and Symbol3 are not referenced by the image being linked:
0002:00000874 Idle Symbol1
0002:00000CE4 Symbol2
0002:000000E7 Idle Symbol3
Do not generate map (-x)
Turns off the creation of the default linker map file.
By default, the linker generates a map file with that contains general segment information including a list of segments, the program start address, and any warning or error messages produced during the link. There is no switch for this setting. Use the -x option to suppress the creation of this default map file.  
Map with mangled names (-M) 
Prints the mangled C++ identifiers in the map file, not the full name. This can help you identify how names are mangled (mangled names are needed as input by some utilities). Default = False  
OS version (-V) 
Specifies the Windows version ID on which you expect your application to be run. The linker sets the Subsystem version field in the .EXE header to the number you specify in the input box.
You can also set the Windows version ID in the SUBSYSTEM portion of the module definition file (.DEF file) However, any version setting you specify in the IDE or on the command line overrides the setting in the .DEF file.
When you use the -Vd.d command-line option, the linker sets the Windows version ID to the number specified by d.d. For example, if you specify -V4.0, the linker sets the Subsystem version field in the .EXE header to 4.0, which indicates a Windows 95 application.  
Section flags (-GS) 
The -GS switch lets you add flags to a named image section.
This switch adds the flags to the existing flags for a given section. There is no way to remove default flags from a section.
Allowable flags are:
E - Executable
C - Contains Code
I - Contains initialized data
R - Section is readable
W - Section is writable
S - Section is shared
D - Section is discardable
K - Section must not be cached
P - Section must not be paged
Default = No flags
See the description of the Ellipsis pop-up button, above.  
Stack size, maximum (-S) 
Specifies the size of the reserved stack in hexadecimal or decimal. The minimum allowable value for this field is 4K (0x1000).
Specifying the reserved stack size here overrides any STACKSIZE setting in a module definition file.
Default = 0x00100000  
Stack size, minimum (-Sc) 
Spcifies the size of the committed stack in hexadecimal or decimal. The minimum allowable value for this field is 4K (0x1000) and any value specified must be equal to or less than the Reserved Stack Size setting (-S).
Specifying the committed stack size here overrides any STACKSIZE setting in a module definition file.
Default = 0x00002000  
User version (-U) 
Specifies the version ID of your executable. The linker sets the user version field in the executable's header to the number you specify.
When you use the -Ud.d command-line option, the linker sets the application version ID to the number specified by d.d. For example, if you specify -V4.0, the linker sets the user version field in the executable's header to 4.0. Default = 1.0  

 

General option 
Description 
Default 
Saves the current settings as the default for each new project.  
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!