mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-21 01:40:57 +08:00
105 lines
4.4 KiB
Plaintext
105 lines
4.4 KiB
Plaintext
|
Date: Thu, 29 Jul 1999 14:56:40 +0200 (CEST)
|
||
|
From: Peter Breitenlohner <peb@mppmu.mpg.de>
|
||
|
Reply-To: Peter Breitenlohner <peb@mppmu.mpg.de>
|
||
|
To: bug-libtool@gnu.org
|
||
|
Subject: a suggestion for libtool (1.3.2)
|
||
|
Message-ID: <Pine.LNX.3.95.990729134449.8802F-200000@pcl163a.mppmu.mpg.de>
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: MULTIPART/MIXED; BOUNDARY="1803957763-1087116776-933253000=:8802"
|
||
|
Resent-Message-ID: <"2rP1j3.0.z77.p-4et"@mescaline.gnu.org>
|
||
|
Resent-From: bug-libtool@gnu.org
|
||
|
X-Mailing-List: <bug-libtool@gnu.org> archive/latest/952
|
||
|
X-Loop: bug-libtool@gnu.org
|
||
|
Precedence: list
|
||
|
Resent-Sender: bug-libtool-request@gnu.org
|
||
|
Resent-Bcc:
|
||
|
X-UIDL: e9e213a8e1d8afc0286b4a4305ab5a36
|
||
|
Status: RO
|
||
|
X-Status: A
|
||
|
Content-Length: 4085
|
||
|
Lines: 83
|
||
|
|
||
|
This message is in MIME format. The first part should be readable text,
|
||
|
while the remaining parts are likely unreadable without MIME-aware tools.
|
||
|
Send mail to mime@docserver.cac.washington.edu for more info.
|
||
|
|
||
|
--1803957763-1087116776-933253000=:8802
|
||
|
Content-Type: TEXT/PLAIN; charset=US-ASCII
|
||
|
|
||
|
With our setup I found it necessary to apply the following patch to ltmain.sh
|
||
|
(1.3.2) although it should, of course, be applied to ltmain.in instead.
|
||
|
|
||
|
Let me explain the functionality of this modification and its necessity
|
||
|
arising from our situation.
|
||
|
|
||
|
1.
|
||
|
Gcc (or rather the ld invoked by gcc) searches for libraries in more
|
||
|
directories than those specified with "-L" or the standard ones /lib,
|
||
|
/usr/lib, and /usr/local/lib. Most notably there is /usr/<target>/lib or
|
||
|
/usr/local/<target>/lib, depending on where gcc was installed.
|
||
|
|
||
|
According to the general libtool philosophy, when
|
||
|
gcc foo.o bar.o -ltest -o foo
|
||
|
succeeds in locating libtest.so (or libtest.a) in /usr/<target>/lib, then
|
||
|
libtool --mode=link gcc bar.lo -ltest -rpath <whatever> -o bar.la
|
||
|
should equally succeed in locating /usr/<target>/lib/libtest.so.
|
||
|
|
||
|
Note that with different incarnations of gcc for different <target>s one
|
||
|
certainly wouldn't want to add "-L/usr/<target>/lib" to the command line.
|
||
|
The proposed modification uses "gcc -print-file-name=libtest.so" to locate
|
||
|
the dependency libraries.
|
||
|
|
||
|
2.
|
||
|
My actual situation is as follows:
|
||
|
We have a lot of users on our Linux systems (neither RedHat, nor SuSe, nor
|
||
|
Debian, nor ...) and some groups `absolutely need libc5' whereas others
|
||
|
`absolutely need glibc'. In order to allow for coexistence of libc (5.4.38
|
||
|
or so) and glibc (first 2.0.6, now 2.1.1) for quite some time as well as for a
|
||
|
really smooth transition, gcc behaves as either "gcc -b i486-pc-linux-gnulibc1"
|
||
|
or "gcc -b i486-pc-linux-gnu", depending on the value of an environment
|
||
|
variable. Actually /usr/bin/gcc is a symbolic link to a small shell script
|
||
|
that invokes either /usr/i486-pc-linux-gnulibc1/bin/gcc or
|
||
|
/usr/i486-pc-linux-gnu/bin/gcc and similarly for the binutils;
|
||
|
consequently, there are libc5 and glibc vesions of shared libraries, e.g.
|
||
|
/usr/i486-pc-linux-gnulibc1/lib/libncurses.so and
|
||
|
/usr/i486-pc-linux-gnu/lib/libncurses.so etc.
|
||
|
|
||
|
All that worked really nice, until I recently tried to compile
|
||
|
w3c-libwww-5.2.8 that uses libtool. First I had to replace their libtool-1.2e
|
||
|
(which couldn't resolve shared library dependencies at all) by version 1.3.2
|
||
|
in order to locate libdl.so etc. (in /lib), but still had problems to locate
|
||
|
libz.so (in /usr/<target>/lib) until I manufactured the patch.
|
||
|
|
||
|
regards
|
||
|
Peter Breitenlohner <peb@mppmu.mpg.de>
|
||
|
|
||
|
|
||
|
--1803957763-1087116776-933253000=:8802
|
||
|
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="libtool-1.3.2-diff"
|
||
|
Content-Transfer-Encoding: BASE64
|
||
|
Content-ID: <Pine.LNX.3.95.990729145640.8802G@pcl163a.mppmu.mpg.de>
|
||
|
Content-Description:
|
||
|
|
||
|
diff -ur libtool-1.3.2.orig/ltmain.sh libtool-1.3.2/ltmain.sh
|
||
|
--- libtool-1.3.2.orig/ltmain.sh Wed May 26 02:31:24 1999
|
||
|
+++ libtool-1.3.2/ltmain.sh Tue Jul 27 09:43:49 1999
|
||
|
@@ -1902,7 +1902,15 @@
|
||
|
# If $name is empty we are operating on a -L argument.
|
||
|
if test "$name" != "" ; then
|
||
|
libname=`eval \\$echo \"$libname_spec\"`
|
||
|
- for i in $lib_search_path; do
|
||
|
+ # First try to locate the library through gcc
|
||
|
+ gcc_path=
|
||
|
+ if test "$CC" = "gcc" ; then
|
||
|
+ eval library_names=\"$library_names_spec\"
|
||
|
+ set dummy $library_names
|
||
|
+ eval potlib="\$$#"
|
||
|
+ gcc_path="`gcc -print-file-name=$potlib | sed 's%/*'$potlib'$%%'`"
|
||
|
+ fi
|
||
|
+ for i in $gcc_path $lib_search_path; do
|
||
|
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
|
||
|
for potent_lib in $potential_libs; do
|
||
|
# Follow soft links.
|
||
|
|
||
|
--1803957763-1087116776-933253000=:8802--
|