The form of the
gnatlink command is
$ gnatlink [switches] mainprog[.ali] [non-Ada objects] [linker options]
mainprog.ali references the ALI file of the main program.
The .ali extension of this file can be omitted. From this
gnatlink locates the corresponding binder file
b~mainprog.adb and, using the information in this file along
with the list of non-Ada objects and linker options, constructs a Unix
linker command file to create the executable.
The arguments following mainprog.ali are passed to the
linker uninterpreted. They typically include the names of object files
for units written in other languages than Ada and any library references
required to resolve references in any of these foreign language units,
pragma Import statements in any Ada units.
linker options is an optional list of linker specific
switches. The default linker called by gnatlink is gcc which in
turn calls the appropriate system linker usually called
ld. Standard options for the linker such as
-Ldir can be added as is. For options that are not recognized by
gcc as linker options, the gcc switches
-Wl, shall be used. Refer to the GCC documentation for
details. Here is an example showing how to generate a linker map
assuming that the underlying linker is GNU ld:
$ gnatlink my_prog -Wl,-Map,MAPFILE
Using linker options it is possible to set the program stack and heap size. See see Setting Stack Size from gnatlink and see Setting Heap Size from gnatlink.
gnatlink determines the list of objects required by the Ada
program and prepends them to the list of objects passed to the linker.
gnatlink also gathers any arguments set by the use of
pragma Linker_Options and adds them to the list of arguments
presented to the linker.