6 [GNU Libtool][libtool] is a generic library support script.
7 [Libtool][] hides the complexity of using shared libraries behind a
8 consistent, portable interface.
10 Libtool's home page is:
12 https://www.gnu.org/software/libtool/libtool.html
14 See the file [NEWS][] for a description of recent changes to Libtool.
16 Please note that you can build GNU Libtool from this directory using a
17 vendor Make program as long as this is an official release tarball;
18 otherwise you will need GNU Make for sane VPATH support. See the file
19 [INSTALL][] for complete generic instructions on how to build and install
20 Libtool. Also, see the file [doc/notes.txt][notes] for some platform-
23 See the info node (libtool)Tested Platforms. (or the file
24 [doc/PLATFORMS][platforms]) for a list of platforms that Libtool already
27 Please try it on all the platforms you have access to:
29 * If it builds and passes the test suite (`gmake check`), please send
30 a short note to the [libtool mailing list][libtool list] with a
31 subject line including the string `[PLATFORM]`, and containing the
32 details from the end of `./libtool --help` in the body.
33 * Otherwise, see _Reporting Bugs_ below for how to help us fix any
34 problems you discover.
36 To use Libtool, add the new generic library building commands to your
37 `Makefile`, `Makefile.in`, or `Makefile.am`. See the documentation for
40 [install]: https://git.savannah.gnu.org/cgit/automake.git/tree/INSTALL
41 [libtool]: https://www.gnu.org/s/libtool
42 [libtool list]: mailto:libtool@gnu.org
43 [news]: https://git.savannah.gnu.org/cgit/libtool.git/tree/NEWS
44 [notes]: https://git.savannah.gnu.org/cgit/libtool.git/tree/doc/notes.texi
45 [platforms]: https://git.savannah.gnu.org/cgit/libtool.git/tree/doc/PLATFORMS
51 If this distribution doesn't work for you, before you report the
52 problem, at least try upgrading to the latest released version first,
53 and see whether the issue persists. If you feel able, you can also
54 check whether the issue has been fixed in the development sources for
55 the next release (see _Obtaining the Latest Sources_ below).
57 Once you've determined that your bug is still not fixed in the latest
58 version, please send a full report to the libtool [bug mailing list][],
61 1. the information from the end of the help message given by
62 `./libtool --help`, and the verbose output of any failed tests
63 (see _The Test Suites_ immediately below);
64 2. complete instructions for how to reproduce your bug, along with
65 the results you were expecting, and how they differ from what you
67 3. a workaround or full fix for the bug, if you have it;
68 4. a copy of `tests/testsuite.log` if you are experiencing failures
69 in the Autotest testsuite.
70 5. new test cases for the testsuite that demonstrate the bug are
71 especially welcome, and will help to ensure that future releases
72 don't reintroduce the problem - if you're not able to write a
73 complete testsuite case, a simple standalone shell script is
74 usually good enough to help us write a test for you.
76 If you have any other suggestions, or if you wish to port Libtool to a
77 new platform, please send email to the [mailing list][libtool list].
79 Please note that if you send us an non-trivial code for inclusion in a
80 future release, we may ask you for a copyright assignment (for brief
81 details see the 'Copyright Assignment' section on our
82 [Contributing][contribute] webpage.
84 [bug mailing list]: mailto:bug-libtool@gnu.org
85 [contribute]: https://www.gnu.org/software/libtool/contribute.html
91 Libtool comes an integrated sets of tests to check that your build
92 is sane. You can run like this, assuming that `gmake` refers to GNU
97 The new, Autotest-driven testsuite is documented in:
99 info Autoconf 'testsuite Invocation'
101 but simple help may also be obtained through:
103 gmake check TESTSUITEFLAGS='--help'
105 For verbose output, add the flag '-v', for running only a subset of the
106 independent tests, merely specify them by number or by keyword, both of
107 which are displayed with the '--list' flag. For example, the 'libtool'
108 keyword is used for the tests that exercise only this script. So it is
109 possible to test an installed script, possibly from a different Libtool
113 TESTSUITEFLAGS="-k libtool LIBTOOL=/path/to/libtool"
115 Some tests, like the one exercising `max_cmd_len` limits, make use of
116 this to invoke the testsuite recursively on a subset of tests. For these
117 tests, the variable `INNER_TESTSUITEFLAGS` may be used. It will be
118 expanded right after the `-k libtool`, without separating whitespace, so
119 that further limiting of the recursive set of tests is possible. For
120 example, to run only the template tests within the `max_cmd_len`, use:
122 gmake check TESTSUITEFLAGS="-v -x -k max_cmd_len \
123 INNER_TESTSUITEFLAGS=',template -v -x'"
125 If you wish to report test failures to the libtool list, you need to
126 send the file `tests/testsuite.log` to the [bug mailing list][].
129 4. Obtaining the Latest Sources
130 ===============================
132 * With the exception of ancient releases, all official GNU Libtool
133 releases have a detached GPG signature file. With this you can verify
134 that the corresponding file (i.e. without the `.sig` suffix) is the
135 same file that was released by the owner of it's GPG key ID. First,
136 be sure to download both the .sig file and the corresponding release,
137 then run a command like this:
139 gpg --verify libtool-x.y.z.tar.gz.sig
141 If that command fails because you don't have the required public key,
142 then run this command to import it:
144 gpg --keyserver keys.gnupg.net --recv-keys 2983D606
146 and then rerun the `gpg --verify` command.
148 * Official stable releases of GNU Libtool, along with these detached
149 signature files are available from:
151 ftp://ftp.gnu.org/gnu/libtool
153 To reduce load on the main server, please use one of the mirrors
156 https://www.gnu.org/order/ftp.html
158 * Alpha quality pre-releases of GNU Libtool, also with detached
159 signature files are available from:
161 ftp://alpha.gnu.org/gnu/libtool
163 and some of the mirrors listed at:
165 https://www.gnu.org/order/ftp.html
167 * The master libtool repository is stored in git.
169 If you are a member of the savannah group for GNU Libtool, a writable
170 copy of the libtool repository can be obtained by:
172 git clone <savannah-user>@git.sv.gnu.org:/srv/git/libtool.git
174 If you are behind a firewall that blocks the git protocol, you may
175 find it useful to use
177 git config --global url.https://git.sv.gnu.org/r/.insteadof \
178 git://git.sv.gnu.org/
180 to force git to transparently rewrite all savannah git references to
183 If you are not a member of the savannah group for GNU Libtool, you can
184 still fetch a read-only copy with either:
186 git clone git://git.sv.gnu.org/libtool.git
188 or using the CVS pserver protocol:
190 cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/srv/git/libtool.git \
193 * Before you can build from git, you need to bootstrap. This requires:
194 - Autoconf 2.64 or later
195 - Automake 1.11.1 or later
196 - Help2man 1.29 or later
197 - Xz 4.999.8beta or later (from [tukaani.org](https://tukaani.org/xz))
198 - Texinfo 4.8 or later
199 - Any prerequisites of the above (such as m4, perl, tex)
201 Note that these bootstrapping dependencies are much stricter than
202 those required to use a distributed release for your own packages.
203 After installation, GNU Libtool is designed to work either standalone,
205 - Autoconf 2.59 or later
206 - Automake 1.9.6 or later
208 * The `bootstrap` script sets up the source directory for you to hack.
214 People have complained that they find the version numbering scheme under
215 which libtool is released confusing... so we've changed it!
219 <major-number>.<minor-number>
221 Releases with a **major-number** less than 1 were not yet feature
222 complete. Releases with a **major-number** of 1 used the old numbering
223 scheme that everyone disliked so much. Releases with a **major-number**
224 of 2 us the new scheme described here. If libtool ever undergoes a
225 major rewrite or substantial restructuring, the **major-number** will be
228 If we make a patch release to fix bugs in a stable release, we use a
233 If we make an alpha quality prerelease, we use a fourth number for the
234 number of changsets applied since the version it's based on:
238 And finally, if you build an unreleased version it will have a short git
239 revision hash string in hexadecimal appended to all of that:
244 Copyright (C) 2004-2010, 2015-2019, 2021-2024 Free Software
247 Written by Gary V. Vaughan, 2004
249 This file is part of GNU Libtool.
251 Copying and distribution of this file, with or without modification,
252 are permitted in any medium without royalty provided the copyright
253 notice and this notice are preserved. This file is offered as-is,
254 without warranty of any kind.