1 |
|
GNU Libtool |
2 |
|
*********** |
3 |
|
|
4 |
|
Introduction |
5 |
|
============ |
6 |
|
|
7 |
This is GNU Libtool, a generic library support script. Libtool hides |
This is GNU Libtool, a generic library support script. Libtool hides |
8 |
the complexity of using shared libraries behind a consistent, portable |
the complexity of using shared libraries behind a consistent, portable |
9 |
interface. |
interface. |
12 |
Makefile, Makefile.in, or Makefile.am. See the documentation for |
Makefile, Makefile.in, or Makefile.am. See the documentation for |
13 |
details. |
details. |
14 |
|
|
15 |
Libtool supports building static libraries on all platforms. |
See the info node (libtool)Tested Platforms. (or the file |
16 |
|
doc/PLATFORMS) for a list of platforms that libtool supports. |
|
Shared library support has been implemented for these platforms: |
|
|
AIX 3.x, 4.x (*-*-aix3*, *-*-aix4*) |
|
|
BeOS (*-*-beos*) |
|
|
BSD/OS 2.1, 3.x, 4.x (*-*-bsdi2.1, *-*-bsdi3*, *-*-bsdi4*) |
|
|
Darwin 5.x, 6.x a.k.a Mac OS X (*-*-darwin*) [see note] |
|
|
Digital/UNIX 3.x, 4.x, a.k.a. OSF/1 (*-*-osf3*, *-*-osf4*) |
|
|
DG/UX R4.11, R4.12, R4.20 (*-*-dguxR411*, *-*-dguxR412*, *-*-dguxR420*) |
|
|
FreeBSD 2.x, 3.x, 4.x (*-*-freebsd2*, *-*-freebsd3*, *-*-freebsd4*) |
|
|
GNU Hurd (*-*-gnu*) |
|
|
GNU/Linux ELF (*-*-linux-gnu*, except aout, coff, and oldld) |
|
|
HP-UX 9.x, 10.x, 11.x (*-*-hpux9*, *-*-hpux10*, *-*-hpux11*) [see note] |
|
|
IRIX 5.x, 6.x (*-*-irix5*, *-*-irix6*) |
|
|
NCR MP-RAS 3.x (*-ncr-sysv4.3*) [see note] |
|
|
NEWS-OS Release 6 (*-*-newsos6) |
|
|
Motorola System V 4 (mk88-motorola-sysv4) [see note] |
|
|
NetBSD 1.x (*-*-netbsd*) |
|
|
OpenBSD 2.x (*-*-openbsd*) |
|
|
OS/2 using EMX (*-*-os2*) |
|
|
Reliant Unix (*-sni-sysv4) [see note] |
|
|
SCO OpenServer 5.x (*-*-sco3.2v5*) |
|
|
SCO UnixWare 7.x (*-*-sysv5*) |
|
|
Solaris 2.x (*-*-solaris2*) |
|
|
SunOS 4.x, a.k.a. Solaris 1.x (*-*-sunos4*) |
|
|
UnixWare 2.x (*-*-sysv4.2uw2*) |
|
|
UTS 4.x (*-*-uts4*) |
|
|
All ELF targets that use both the GNU C compiler (gcc) and GNU ld |
|
|
|
|
|
NOTE: Some HP-UX sed programs are horribly broken, and cannot handle |
|
|
libtool's requirements, so users may report unusual problems. There |
|
|
is no workaround except to install a working sed (such as GNU sed) on |
|
|
these systems. |
|
|
|
|
|
NOTE: The vendor-distributed NCR MP-RAS cc programs emits copyright |
|
|
on standard error that confuse tests on size of conftest.err. The |
|
|
workaround is to specify CC when run configure with CC='cc -Hnocopyr'. |
|
|
|
|
|
NOTE: Due to a bug in autoconf cc isn't supported on Motorola System V 4. |
|
|
You can only use gcc. This bug will hopefully be fixed in autoconf 2.14. |
|
|
|
|
|
NOTE: Any earlier DG/UX system with ELF executables, such as R3.10 or |
|
|
R4.10, is also likely to work, but hasn't been explicitly tested. |
|
|
|
|
|
NOTE: Libtool has only been tested with the Siemens C-compiler and |
|
|
an old version of gcc provided by Marco Walther you can find on |
|
|
ftp://ftp.mch.sni.de/sni/mr/pd/gnu/gcc/gcc.2.7.2.3 on Reliant Unix. |
|
|
|
|
|
NOTE: libtool.m4, ltdl.m4 and the configure.ac files are marked to use |
|
|
autoconf-mode, which is distributed with GNU Emacs 21, and all recent |
|
|
releases of XEmacs. |
|
|
|
|
|
NOTE: In some cases support is more limited on Darwin 5.x because of |
|
|
the use of zsh as the default system shell. |
|
17 |
|
|
18 |
Libtool's home page is: |
Libtool's home page is: |
19 |
|
|
24 |
See the file INSTALL for instructions on how to build and install |
See the file INSTALL for instructions on how to build and install |
25 |
libtool. |
libtool. |
26 |
|
|
27 |
See the info node (libtool)Tested Platforms. (or the file |
Version Numbering |
28 |
doc/PLATFORMS) for a list of platforms that libtool shared library |
================= |
29 |
support was tested on. |
|
30 |
|
Note the version numbers in the libtool-1.5.x series are a little strange, |
31 |
|
the micro version (x) jumps by two on each release. The version in cvs always |
32 |
|
has an odd micro version, while only released versions have even micro versions. |
33 |
|
This will change again in the future. For more information about version |
34 |
|
numbers see: |
35 |
|
|
36 |
|
http://www.gnu.org/software/libtool/contribute.html |
37 |
|
|
38 |
|
|
39 |
|
Reporting Bugs |
40 |
|
============== |
41 |
|
|
42 |
If you have any suggestions or bug reports, or you wish to port |
If you have any suggestions or bug reports, or you wish to port |
43 |
libtool to a new platform, please send electronic mail to the libtool |
libtool to a new platform, please send electronic mail to the libtool |
44 |
mailing list <libtool@gnu.org> or bug reports to <bug-libtool@gnu.org>. |
mailing list <libtool@gnu.org> or bug reports to <bug-libtool@gnu.org>. |
45 |
Don't forget to mention the version of libtool that you are currently |
Be sure to include the version of libtool that you are using - you can find |
46 |
using (by typing `libtool --version'). |
out with `./libtool --version'. Also give as much information as necessary on |
47 |
|
your OS, compiler and other build tools. |
48 |
|
|
|
People have complained that they find the version numbering scheme |
|
|
under which libtool is released confusing... it works like this: |
|
49 |
|
|
50 |
<major-number>.<minor-number> |
The Test Suite |
51 |
|
============== |
52 |
|
|
53 |
|
Libtool comes with an integrated set of tests to check that your build |
54 |
|
is sane. You can run the entire suite like this: |
55 |
|
|
56 |
|
make check |
57 |
|
|
58 |
|
The tests run in groups in the various demo subdirectories, so if one |
59 |
|
of the tests early in a group FAILs, the rest of the tests in that |
60 |
|
group will be SKIPPED. If you see a FAIL further into a group, even |
61 |
|
if a test with the same name PASSes in another test group, you need to |
62 |
|
take note of the name of the first test in the group if you want to |
63 |
|
rerun the group with FAILures to get verbose output. |
64 |
|
|
65 |
|
To run a test group in isolation (say, you think you have fixed a bug, |
66 |
|
but don't want to rerun the entire suite), you can do it like this: |
67 |
|
|
68 |
|
env TESTS='cdemo-static.test cdemo-make.test cdemo-exec.test' make check |
69 |
|
|
70 |
|
Providing that you have a FAIL from the most recent group from a |
71 |
|
particular demo directory (like the cdemo-static.test group above), you |
72 |
|
can explore the state of the directory to help with debugging. |
73 |
|
|
74 |
|
If you wish to report a test group failure to the libtool list, you |
75 |
|
need to send the verbose output of the FAILing group, along with |
76 |
|
information such as the host OS, compiler tools, shell etc. to the |
77 |
|
bug report mailing list, <bug-libtool@gnu.org>. You can generate verbose |
78 |
|
test output like this: |
79 |
|
|
80 |
|
env VERBOSE=1 TESTS='cdemo-static.test cdemo-make.test cdemo-exec.test' \ |
81 |
|
make check |
82 |
|
|
83 |
|
Alternatively, because each test is a shell script, in a non VPATH build, |
84 |
|
you can simply execute the tests, they will be verbose. |
85 |
|
|
86 |
|
Notes |
87 |
|
===== |
88 |
|
|
89 |
|
1) Some HP-UX sed programs are horribly broken, and cannot handle |
90 |
|
libtool's requirements, so users may report unusual problems. There |
91 |
|
is no workaround except to install a working sed (such as GNU sed) on |
92 |
|
these systems. |
93 |
|
|
94 |
|
2) The vendor-distributed NCR MP-RAS cc programs emits copyright |
95 |
|
on standard error that confuse tests on size of conftest.err. The |
96 |
|
workaround is to specify CC when run configure with CC='cc -Hnocopyr'. |
97 |
|
|
98 |
|
3) Any earlier DG/UX system with ELF executables, such as R3.10 or |
99 |
|
R4.10, is also likely to work, but hasn't been explicitly tested. |
100 |
|
|
101 |
Releases with a <major-number> less than 1 were not yet feature |
4) On Reliant Unix libtool has only been tested with the Siemens C-compiler |
102 |
complete. If libtool ever undergoes a major rewrite or substantial |
and an old version of gcc provided by Marco Walther. |
|
restructuring, the <major-number> will be incremented again. In the |
|
|
mean time, whenever we make a stable release it will have its |
|
|
<minor-number> incremented with respect to the previous stable |
|
|
release. |
|
|
|
|
|
So that alpha releases can be distinguished from stable releases, |
|
|
we append a letter to them, starting with `a' and continuing |
|
|
alphabetically: |
|
|
|
|
|
<major-number>.<minor-number><alpha> |
|
|
|
|
|
Since alpha releases are start with the code of a previous stable |
|
|
release, the <major-number> and <minor-number> are the same as the |
|
|
stable release they started with. So release `1.3b' is the first |
|
|
alpha release after stable release `1.3', and so on. |
|
|
|
|
|
To complicate matters slightly we always increment the letter in the |
|
|
repository before *and* after making a release tarball. This means |
|
|
that "odd" letters (a,c,e,g...) only exist in the repository, and |
|
|
"even" letters are used instantaneously for an alpha release. For |
|
|
example, you can tell that libtool-1.3c is an alpha release that is a |
|
|
snapshot of the repository taken between official alpha releases |
|
|
1.3b and 1.3d. Since the odd lettered alpha release number potentially |
|
|
cover many states of the tree, we somtimes qualify such releases by |
|
|
adding the cvs version of the ChangeLog: |
|
|
|
|
|
$ libtool --version |
|
|
ltmain.sh (GNU libtool) 1.3c (1.666 2000/01/14 13:50:21) |
|
|
|
|
|
Finally, if we need to make a patch release to fix bugs in a stable |
|
|
release, and the development on the trunk has made the tree unstable, |
|
|
we use a third number, so: |
|
|
|
|
|
<major-number>.<minor-number>.<patch number> |
|
|
|
|
|
$ libtool --version |
|
|
ltconfig (GNU libtool) 1.3.4 (1.385.2.196 1999/12/07 21:47:57) |
|
|
|
|
|
There might be several patch releases to the last stable release, |
|
|
and all happening concurrently with alpha releases. For example, |
|
|
libtool-1.3.4 and libtool-1.3b might be available at the same time: |
|
|
`1.3.4' is the fourth patch release after stable release `1.3'; |
|
|
`1.3b' is the first alpha release after stable release `1.3'. |
|
103 |
|
|
104 |
|
5) libtool.m4, ltdl.m4 and the configure.ac files are marked to use |
105 |
|
autoconf-mode, which is distributed with GNU Emacs 21, Autoconf itself, and |
106 |
|
all recent releases of XEmacs. |
107 |
|
|
108 |
|
6) The default shell on UNICOS 9, a ksh 88e variant, is too buggy to |
109 |
|
correctly execute the libtool script. Users are advised to install a |
110 |
|
modern shell such as GNU bash. |