mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-21 01:40:57 +08:00
108 lines
3.2 KiB
Plaintext
108 lines
3.2 KiB
Plaintext
This is an alpha testing release of GNU libtool.
|
|
|
|
Please do not send any bug reports or questions about it to public
|
|
forums (such as GNU newsgroups), send them directly to the libtool
|
|
mailing list <bug-libtool@gnu.org>.
|
|
|
|
|
|
Automake
|
|
********
|
|
|
|
Between beta release 1.0b and 1.0c, libtool changed its private
|
|
directory name from `.libs' to `_libs' in order to be compatible with
|
|
MS-DOS filenames. This change allows libtool to run under the DJGPP
|
|
build environment. In 1.0d, I've changed *again*... most platforms
|
|
use `.libs', and only MS-DOS uses `_libs', which helps libtool to
|
|
remain unobtrusive under Unix. Unfortunately, I've reintroduced a
|
|
minor bug into Automake's `clean' rules.
|
|
|
|
This should not affect anybody else's programs unless you depend on
|
|
libtool internals. If you do, and it isn't just for deleting
|
|
unnecessary directories, then let me know so libtool can support the
|
|
functionality you require.
|
|
|
|
To fix Automake, edit libtool.am, and change the following lines:
|
|
i.e.
|
|
|
|
clean-libtool:
|
|
rm -rf .libs
|
|
|
|
or:
|
|
|
|
clean-libtool:
|
|
rm -rf _libs
|
|
|
|
to:
|
|
|
|
clean-libtool:
|
|
rm -rf .libs _libs
|
|
|
|
and reinstall Automake. If you've already installed Automake, you can
|
|
make the same change in /usr/local/share/automake/libtool.am, to avoid
|
|
having to reinstall.
|
|
|
|
|
|
|
|
global_symbol_pipe
|
|
******************
|
|
|
|
CALL FOR HELP: In order to implement dlopening even on archictectures
|
|
that don't have shared libraries, I am collecting `NM' and
|
|
`global_symbol_pipe' values for every known operating system.
|
|
|
|
If ltconfig on your system says that it found the command to parse NM
|
|
output, then you don't need to look any further:
|
|
|
|
checking command to parse /usr/bin/nm output... yes
|
|
|
|
Otherwise, I would very much appreciate hearing about the combination
|
|
of `NM' and `global_symbol_pipe' that ltconfig needs to use in order
|
|
to pass this test.
|
|
|
|
`NM' is set by ltconfig to be an nm program that gives BSD-compatible
|
|
symbol output, such as:
|
|
|
|
$ nm assert-perr.o
|
|
U _IO_stderr_
|
|
00000000 T __assert_perror_fail
|
|
U __assert_program_name
|
|
U abort
|
|
U fflush
|
|
U fprintf
|
|
U strerror
|
|
|
|
If your OS's nm cannot produce output like this, that's still okay,
|
|
but, for simplicity, I prefer using this kind of output.
|
|
|
|
Then, global_symbol_pipe is a command that takes all exported symbols,
|
|
including undefined ones, and produces a two-column list of them. The
|
|
contents of the first column are the raw symbol name, and the second
|
|
column contains the name needed to access the symbols from a C
|
|
program.
|
|
|
|
So, on most OSes, this will be a command like:
|
|
|
|
$ nm assert-perr.o | \
|
|
sed -e '/^.* [BCDEGRSTU] \([_A-Za-z][_A-Za-z0-9]*\)$/!d'
|
|
-e 's/^.* [BCDEGRSTU] \([_A-Za-z][_A-Za-z0-9]*\)$/\1 \1/'
|
|
_IO_stderr_ _IO_stderr_
|
|
__assert_perror_fail __assert_perror_fail
|
|
__assert_program_name __assert_program_name
|
|
abort abort
|
|
fflush fflush
|
|
fprintf fprintf
|
|
strerror strerror
|
|
|
|
On some OSes, the C symbols will need to strip a leading underscore:
|
|
|
|
$ nm assert-perr.o | \
|
|
sed -e '/^.* [BCDEGRSTU] _\([_A-Za-z][_A-Za-z0-9]*\)$/!d'
|
|
-e 's/^.* [BCDEGRSTU] _\([_A-Za-z][_A-Za-z0-9]*\)$/_\1 \1/'
|
|
__IO_stderr_ _IO_stderr_
|
|
___assert_perror_fail __assert_perror_fail
|
|
___assert_program_name __assert_program_name
|
|
_abort abort
|
|
_fflush fflush
|
|
_fprintf fprintf
|
|
_strerror strerror
|