-static (-qstaticlink)
Category
Pragma equivalent
None.
Purpose
Controls whether static or shared runtime libraries are linked into an application.
Syntax
>>- -static--+----------+-------------------------------------->< '- -libgcc-'
>>- -shared-libgcc---------------------------------------------><
.-nostaticlink-. >>- -q--+-staticlink---+--+-------------------+---------------->< | .-:----------. | | V | | '-=----+-libgcc-+-+-' '-xllibs-'
The following table shows the equivalent usage between different format of options for specifying the linkage of shared and nonshared libraries.
Equivalent option | Meaning |
---|---|
-static or -qstaticlink | Build a static object and prevent linking with shared libraries. Every library that is linked to must be a static library. |
-shared-libgcc or -qnostaticlink=libgcc | Link with the shared version of libgcc. |
-static-libgcc or -qstaticlink=libgcc | Link with the static version of libgcc. |
Defaults
-qnostaticlink
Parameters
- libgcc
- When you specify -shared-libgcc, the compiler links the shared version of libgcc.
- When you specify -static-libgcc, the compiler links the static version of libgcc.
- xllibs
- When you specify xllibs with -qnostaticlink, the compiler links the shared version of the XL compiler libraries.
- When you specify xllibs with -qstaticlink, the compiler links the static version of the XL compiler libraries.
- The xllibs suboption is available only for the -qstaticlink and -qnostaticlink options.
Usage
When you specify -static without suboptions, only static libraries are linked with the object file.
When you specify -qnostaticlink without suboptions, shared libraries are linked with the object file.
When you specify -qstaticlink=xllibs and -qmkshrobj, both options take effect. The compiler links in the static version of XL libraries and creates a shared object at the same time.
When compiler options are combined, conflicts might occur. The following table describes the resolutions of the conflicting compiler options.
Options combination examples | Resolution result | Compiler behavior |
---|---|---|
-qnostaticlink -static-libgcc | Equivalent to -static-libgcc | If you first specify -qnostaticlink without suboptions and then specify -static or -qstaticlink with or without suboptions, -qnostaticlink is overridden. All libraries are linked statically. |
-qnostaticlink -qstaticlink=xllibs | Equivalent to -qstaticlink=xllibs | |
-static-libgcc -qnostaticlink | Equivalent to -qnostaticlink | If you specify -static with or without suboptions followed by -qnostaticlink without suboptions, -qnostaticlink takes effect and shared libraries are linked. |
-static -shared-libgcc | Equivalent to -static | If you specify -static without suboptions followed by -shared-libgcc or -qnostaticlink with suboptions, -static takes effect and only static libraries are linked with the object file. |
-static -qnostaticlink=libgcc :xllibs |
Equivalent to -static | |
-shared-libgcc -static | Equivalent to -static | If you first specify -shared-libgcc with suboptions and then specify -static without suboptions, -static takes effect and all libraries are linked statically. |
- If a runtime library is linked in statically while its message catalog is not installed on the system, messages are issued with message numbers only, and no message text is shown.
- If a shared library or a dynamically linked application is supposed to throw or catch exceptions, you must link it with the shared libgcc by using -shared-libgcc.
Predefined macros
None.