# Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

### Protego

# MPLAB XC16 C-Compiler

- 1
- 2
…
- 102
- 103
- 104
- 105
- 106
…
- 365
- 366

MPLAB
®
XC16 C Compiler Users Guide
DS50002071C-page 104  2012-2013 Microchip Technology Inc.
-llibrary Search the library named library when linking.
The linker searches a standard list of directories for the library, which is
actually a file named liblibrary.a. The linker then uses this file as if
it had been specified precisely by name.
It makes a difference where in the command you write this option; the
linker processes libraries and object files in the order they are specified.
Thus, foo.o -lz bar.o searches library z after file foo.o but before
bar.o. If bar.o refers to functions in libz.a, those functions may not
be loaded.
The directories searched include several standard system directories,
plus any that you specify with -L.
Normally the files found this way are library files (archive files whose
members are object files). The linker handles an archive file by scanning
through it for members which define symbols that have so far been
referenced but not defined. But if the file that is found is an ordinary
object file, it is linked in the usual fashion. The only difference between
using an -l option (e.g., -lmylib) and specifying a file name (e.g.,
libmylib.a) is that -l searches several directories, as specified.
By default the linker is directed to search:
<install-path>\lib
for libraries specified with the -l option.
This behavior can be overridden using the environment variables
defined in Section 19.4 Predefined Macro Names.
-nodefaultlibs Do not use the standard system libraries when linking. Only the libraries
you specify will be passed to the linker. The compiler may generate calls
to memcmp, memset and memcpy. These entries are usually resolved by
entries in the standard compiler libraries. These entry points should be
supplied through some other mechanism when this option is specified.
-nostdlib Do not use the standard system startup files or libraries when linking. No
startup files and only the libraries you specify will be passed to the
linker. The compiler may generate calls to memcmp, memset and
memcpy. These entries are usually resolved by entries in standard
compiler libraries. These entry points should be supplied through some
other mechanism when this option is specified.
-s Remove all symbol table and relocation information from the
executable.
-T script Specify the linker script file, script, to be used at link time. This option
is translated into the equivalent -T linker option.
-u symbol Pretend symbol is undefined to force linking of library modules to
define the symbol. It is legitimate to use -u multiple times with different
symbols to force loading of additional library modules.
-Wl,option Pass option as an option to the linker. If option contains commas, it
is split into multiple options at the commas.
For example, to generate a map file, use -W1, -Map=Project.map.
-Xlinker option Pass option as an option to the linker. You can use this to supply
system-specific linker options that the compiler does not know how to
recognize.
TABLE 5-16: LINKING OPTIONS (CONTINUED)
Option Definition

- 1
- 2
…
- 102
- 103
- 104
- 105
- 106
…
- 365
- 366