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 Development and testing is primarily done on the 'development' git
170 branch. 'master' is used for release ready code. Periodically,
171 commits are cherry-picked from 'development' to 'master'.
173 If you are a member of the savannah group for GNU Libtool, a writable
174 copy of the libtool repository can be obtained by:
176 git clone <savannah-user>@git.sv.gnu.org:/srv/git/libtool.git
178 If you are behind a firewall that blocks the git protocol, you may
179 find it useful to use
181 git config --global url.https://git.sv.gnu.org/r/.insteadof \
182 git://git.sv.gnu.org/
184 to force git to transparently rewrite all savannah git references to
187 If you are not a member of the savannah group for GNU Libtool, you can
188 still fetch a read-only copy with either:
190 git clone git://git.sv.gnu.org/libtool.git
192 or using the CVS pserver protocol:
194 cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/srv/git/libtool.git \
197 * Before you can build from git, you need to bootstrap. This requires:
198 - Autoconf 2.64 or later
199 - Automake 1.11.1 or later
200 - Help2man 1.29 or later
201 - Xz 4.999.8beta or later (from [tukaani.org](https://tukaani.org/xz))
202 - Texinfo 4.8 or later
203 - Any prerequisites of the above (such as m4, perl, tex)
205 Note that these bootstrapping dependencies are much stricter than
206 those required to use a distributed release for your own packages.
207 After installation, GNU Libtool is designed to work either standalone,
209 - Autoconf 2.59 or later
210 - Automake 1.9.6 or later
212 * The `bootstrap` script sets up the source directory for you to hack.
218 People have complained that they find the version numbering scheme under
219 which libtool is released confusing... so we've changed it!
223 <major-number>.<minor-number>
225 Releases with a **major-number** less than 1 were not yet feature
226 complete. Releases with a **major-number** of 1 used the old numbering
227 scheme that everyone disliked so much. Releases with a **major-number**
228 of 2 us the new scheme described here. If libtool ever undergoes a
229 major rewrite or substantial restructuring, the **major-number** will be
232 If we make a patch release to fix bugs in a stable release, we use a
237 If we make an alpha quality prerelease, we use a fourth number for the
238 number of changsets applied since the version it's based on:
242 And finally, if you build an unreleased version it will have a short git
243 revision hash string in hexadecimal appended to all of that:
248 Copyright (C) 2004-2010, 2015-2019, 2021-2024 Free Software
251 Written by Gary V. Vaughan, 2004
253 This file is part of GNU Libtool.
255 Copying and distribution of this file, with or without modification,
256 are permitted in any medium without royalty provided the copyright
257 notice and this notice are preserved. This file is offered as-is,
258 without warranty of any kind.