On Fri, 26 Feb 2021, Niels Möller wrote:
Paul Zimmermann <paul.zimmerm...@inria.fr> writes:
on the gcc118 machine from the gcc compile farm, with gmp-6.2.1, make install
puts the libgmp.{a,so} files in $PREFIX/lib64 instead of $PREFIX/lib. Is there
any reason for that?
I don't know about GMP (and this is the first time I hear about
automake's genered install target using a different default than
libdir=${exec_prefix}/lib). Maybe a recent change in autoconf, automake,
(or possibly libtool)? But I've been doing somethignsimilar in Nettle
for years, and the problem case I want to avoid is this:
1. Assume we have a libfoo.so installed in /usr/local/lib, and that this
is a the directory for 32-bit libraries.
2. User now builds and installs a new version of libfoo.so, for 64-bit
abi, with default prefix. Say, "./configure CC='gcc -m64' && make &&
make check && make install". If make install installs in
/usr/local/lib, it will overwrite a working .so file with a new one
completely breaking 32-bit programs on the system that depend on that
32-bit library.
To avoid this kind of breakage one can apply some heuristics to tweak
the default location, depending on the api built for, OS flavor, current
structure under /usr/lib*, etc.
Does it work to override it by explicitly passing --libdir=$PREFIX/lib?
We have CONFIG_SITE=/usr/share/site/aarch64-unknown-linux-gnu by default
in our environment on this machine, and this file does
# If user did not specify libdir, guess the correct target:
# Use lib64 for 64 bit bi-arch targets, keep the default for the rest.
if test "$libdir" = '${exec_prefix}/lib' ; then
[...]
so it looks like you can override it with anything but what you want (the
file is sourced by configure after it has set libdir).
Anyway, I think Paul's goal is more once GMP has been installed in lib64,
how can MPFR, knowing only the prefix, guess the right libdir? Except for
a hack of creating a dummy project, calling configure with that prefix,
and checking what libdir is used, I don't see a great way to do that.
Trying to use CONFIG_SITE directly would be messy. An alternative would be
to guess that if there is only one subdirectory lib* in prefix, that might
be it, or try each lib* until one works, hoping that the name never gets
weirder. You could also complain to SUSE...
--
Marc Glisse
_______________________________________________
gmp-devel mailing list
gmp-devel@gmplib.org
https://gmplib.org/mailman/listinfo/gmp-devel