www.delorie.com/gnu/docs/libtool/libtool_17.html   search  
 
Buy GNU books!


Libtool

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.2 Link mode

Link mode links together object files (including library objects) to form another library or to create an executable program.

mode-args consist of a command using the C compiler to create an output file (with the `-o' flag) from several object files.

The following components of mode-args are treated specially:

`-all-static'
If output-file is a program, then do not link it against any shared libraries at all. If output-file is a library, then only create a static library.

`-avoid-version'
Tries to avoid versioning (see section 6. Library interface versions) for libraries and modules, i.e. no version information is stored and no symbolic links are created. If the platform requires versioning, this option has no effect.

`-dlopen file'
Same as `-dlpreopen file', if native dlopening is not supported on the host platform (see section 9. Dlopened modules) or if the program is linked with `-static' or `-all-static'. Otherwise, no effect. If file is self libtool will make sure that the program can dlopen itself, either by enabling -export-dynamic or by falling back to `-dlpreopen self'.

`-dlpreopen file'
Link file into the output program, and add its symbols to lt_preloaded_symbols (see section 9.2 Dlpreopening). If file is self, the symbols of the program itself will be added to lt_preloaded_symbols. If file is force libtool will make sure that lt_preloaded_symbols is always defined, regardless of whether it's empty or not.

`-export-dynamic'
Allow symbols from output-file to be resolved with dlsym (see section 9. Dlopened modules).

`-export-symbols symfile'
Tells the linker to export only the symbols listed in symfile. The symbol file should end in `.sym' and must contain the name of one symbol per line. This option has no effect on some platforms. By default all symbols are exported.

`-export-symbols-regex regex'
Same as `-export-symbols', except that only symbols matching the regular expression regex are exported. By default all symbols are exported.

`-Llibdir'
Search libdir for required libraries that have already been installed.

`-lname'
output-file requires the installed library `libname'. This option is required even when output-file is not an executable.

`-module'
Creates a library that can be dlopened (see section 9. Dlopened modules). This option doesn't work for programs. Module names don't need to be prefixed with 'lib'. In order to prevent name clashes, however, 'libname' and 'name' must not be used at the same time in your package.

`-no-fast-install'
Disable fast-install mode for the executable output-file. Useful if the program won't be necessarily installed.

`-no-install'
Link an executable output-file that can't be installed and therefore doesn't need a wrapper script. Useful if the program is only used in the build tree, e.g., for testing or generating other files.

`-no-undefined'
Declare that output-file does not depend on any other libraries. Some platforms cannot create shared libraries that depend on other libraries (see section 8. Inter-library dependencies).

`-o output-file'
Create output-file from the specified objects and libraries.

`-release release'
Specify that the library was generated by release release of your package, so that users can easily tell which versions are newer than others. Be warned that no two releases of your package will be binary compatible if you use this flag. If you want binary compatibility, use the `-version-info' flag instead (see section 6. Library interface versions).

`-rpath libdir'
If output-file is a library, it will eventually be installed in libdir. If output-file is a program, add libdir to the run-time path of the program.

`-R libdir'
If output-file is a program, add libdir to its run-time path. If output-file is a library, add -Rlibdir to its dependency_libs, so that, whenever the library is linked into a program, libdir will be added to its run-time path.

`-static'
If output-file is a program, then do not link it against any uninstalled shared libtool libraries. If output-file is a library, then only create a static library.

`-version-info current[:revision[:age]]'
If output-file is a libtool library, use interface version information current, revision, and age to build it (see section 6. Library interface versions). Do not use this flag to specify package release information, rather see the `-release' flag.

`-Wl,flag'
`-Xlinker flag'
Pass a linker specific flag directly to the linker.

If the output-file ends in `.la', then a libtool library is created, which must be built only from library objects (`.lo' files). The `-rpath' option is required. In the current implementation, libtool libraries may not depend on other uninstalled libtool libraries (see section 8. Inter-library dependencies).

If the output-file ends in `.a', then a standard library is created using ar and possibly ranlib.

If output-file ends in `.o' or `.lo', then a reloadable object file is created from the input files (generally using `ld -r'). This method is often called partial linking.

Otherwise, an executable program is created.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster   donations   bookstore     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003