libtool/doc/notes.texi
Ileana Dumitrescu d575748b83
notes.texi: Inform users about MSVC configuration
When building libltdl with the MSVC toolchain, Fortran checks can cause
issues with finding symbols, but users can avoid this by setting the
Fortran compiler environment variables to "no".

Reported: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78682

* doc/notes.texi: Add item.
2025-08-07 20:20:04 +03:00

115 lines
4.5 KiB
Plaintext

@itemize
@item
You currently need GNU make to build the Libtool package itself.
@item
On AIX there are two different styles of shared linking, one where symbols
are bound at link-time and one where symbols are bound at runtime only,
similar to ELF@. In case of doubt use @code{LDFLAGS=-Wl,-brtl} for the latter style.
@item
On AIX, native tools are to be preferred over binutils; especially for C++ code,
if using the AIX Toolbox GCC 4.0 and binutils, configure with
@code{AR=/usr/bin/ar LD=/usr/bin/ld NM='/usr/bin/nm -B'}.
@item
On AIX, the @command{/bin/sh} is very slow due to its inefficient handling
of here-documents. A modern shell is preferable:
@example
CONFIG_SHELL=/bin/bash; export $CONFIG_SHELL
$CONFIG_SHELL ./configure [...]
@end example
@item
For C++ code with templates, it may be necessary to specify the way the compiler
will generate the instantiations. For Portland pgCC version5, use
@code{CXX='pgCC --one_instantiation_per_object'} and avoid parallel @command{make}.
@item
For C++ code, it may be necessary to specify a library if it is a dependency
of a link/compile flag. For example in GNU G++, if you want to use
@code{-fsanitize=address} you need to specify the @code{-lasan} library,
like so: @code{g++ -o libx.la -fsanitize=address -lasan -rpath [...]}.
@item
On Darwin, for C++ code with templates you need two level shared libraries.
Libtool builds these by default if @env{MACOSX_DEPLOYMENT_TARGET} is set to
10.3 or later at @command{configure} time. See @url{rdar://problem/4135857}
for more information on this issue.
@c @item
@c FreeBSD @command{make} does not conform to @sc{posix} in its handling
@c of file modification times, which causes it to loop while building libtool.
@c Consider using a different @command{such} as GNU make instead.
@item
The default shell on UNICOS 9, a ksh 88e variant, is too buggy to
correctly execute the libtool script. Users are advised to install a
modern shell such as GNU bash.
@item
Some HP-UX @command{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 @command{sed} (such as GNU sed)
on these systems.
@item
The vendor-distributed NCR MP-RAS @command{cc} programs emits copyright
on standard error that confuse tests on size of @file{conftest.err}. The
workaround is to specify @env{CC} when run configure with
@code{CC='cc -Hnocopyr'}.
@item
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.
@item
On Reliant Unix libtool has only been tested with the Siemens C-compiler
and an old version of @command{gcc} provided by Marco Walther.
@item
@file{libtool.m4}, @file{ltdl.m4} and the @file{configure.ac} files are marked
to use autoconf-mode, which is distributed with GNU Emacs 21, Autoconf itself,
and all recent releases of XEmacs.
@item
When building on some GNU/Linux systems for multilib targets @command{libtool}
sometimes guesses the wrong paths that the linker and dynamic linker search by
default. If this occurs for the dynamic library path, you may use the
@code{LT_SYS_LIBRARY_PATH} environment variable to adjust. Otherwise, at
@command{configure} time you may override libtool's guesses by setting the
@command{autoconf} cache variables @code{lt_cv_sys_lib_search_path_spec} and
@code{lt_cv_sys_lib_dlsearch_path_spec} respectively.
@item
For many GNU/Linux systems, the shared library cache is not updated after a
@command{make install}. Instead, the user will need to manually execute
@command{ldconfig 'LIBDIR'} to locate newly installed libraries. Users
should consult a system administrator as this should be done with great
care. Here are some considerations:
@itemize
@item
Libtool is designed to be portable to many different operating systems, and
these OSs behave in various ways. Some OSs will find a new library
automatically if it is installed in the existing configured library paths.
@item
The library installed might not ever be intended to be used by the currently
executing OS because it is part of new distribution builds.
@item
Sometimes libraries are installed privately, using hard-coded run-paths in
their dependent binaries. This is very common when a different version of
the software is to be run than the OS is designed to support.
@end itemize
@item
When using the MSVC toolchain, users should set Fortran environment variables
to the following F77="no" and FC="no". This should avoid possible issues for
symbols not being found when linking libltdl.
@end itemize