manpagez: man pages & more
info libtool
Home | html | info | man
[ << ] [ < ] [ 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. In general, this flag cannot be used together with ‘disable-static’ (see section The LT_INIT macro).

-avoid-version

Tries to avoid versioning (see section 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.

-bindir

Pass the absolute name of the directory for installing executable programs (see Directory Variables in The GNU Coding Standards). libtool may use this value to install shared libraries there on systems that do not provide for any library hardcoding and use the directory of a program and the PATH variable as library search path. This is typically used for DLLs on Windows or other systems using the PE (Portable Executable) format. On other systems, ‘-bindir’ is ignored. The default value used is ‘libdir/../bin’ for libraries installed to ‘libdir’. You should not use ‘-bindir’ for modules.

-dlopen file

Same as ‘-dlpreopen file’, if native dlopening is not supported on the host platform (see section Dlopened modules) or if the program is linked with ‘-static’, ‘-static-libtool-libs’, 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 the list of preloaded symbols (see section Dlpreopening). If file is self, the symbols of the program itself will be added to preloaded symbol lists. If file is force Libtool will make sure that a preloaded symbol list 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 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 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 on systems that allow hardcoding of library paths. 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 libraries other than the ones listed on the command line, i.e., after linking, it will not have unresolved symbols. Some platforms require all symbols in shared libraries to be resolved at library creation (see section Inter-library dependencies), and using this parameter allows libtool to assume that this will not happen.

-o output-file

Create output-file from the specified objects and libraries.

-objectlist file

Use a list of object files found in file to specify objects.

-precious-files-regex regex

Prevents removal of files from the temporary output directory whose names match this regular expression. You might specify ‘\.bbg?$’ to keep those files created with gcc -ftest-coverage for example.

-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 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. On platforms that don’t support hardcoding library paths into executables and only search PATH for shared libraries, such as when output-file is a Windows (or other PE platform) DLL, the ‘.la’ control file will be installed in libdir, but see ‘-bindir’ above for the eventual destination of the ‘.dll’ or other library file itself.

-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.

-shared

If output-file is a program, then link it against any uninstalled shared libtool libraries (this is the default behavior). If output-file is a library, then only create a shared library. In the later case, libtool will signal an error if it was configured with ‘--disable-shared’, or if the host does not support shared libraries.

-shrext suffix

If output-file is a libtool library, replace the system’s standard file name extension for shared libraries with suffix (most systems use ‘.so’ here). This option is helpful in certain cases where an application requires that shared libraries (typically modules) have an extension other than the default one. Please note you must supply the full file name extension including any leading dot.

-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.

-static-libtool-libs

If output-file is a program, then do not link it against any 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 Library interface versions). Do not use this flag to specify package release information, rather see the ‘-release’ flag.

-version-number major[:minor[:revision]]

If output-file is a libtool library, compute interface version information so that the resulting library uses the specified major, minor and revision numbers. This is designed to permit libtool to be used with existing projects where identical version numbers are already used across operating systems. New projects should use the ‘-version-info’ flag instead.

-weak libname

if output-file is a libtool library, declare that it provides a weak libname interface. This is a hint to libtool that there is no need to append libname to the list of dependency libraries of output-file, because linking against output-file already supplies the same interface (see section Linking with dlopened modules).

-Wc,flag
-Xcompiler flag

Pass a linker-specific flag directly to the compiler. With -Wc,, multiple flags may be separated by commas, whereas -Xcompiler passes through commas unchanged.

-Wl,flag
-Xlinker flag

Pass a linker-specific flag directly to the linker.

-XCClinker flag

Pass a link-specific flag to the compiler driver (CC) during linking.

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 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] [ ? ]

This document was generated on December 1, 2011 using texi2html 5.0.