|
From: | Tim Mooney |
Subject: | Re: Running into cross-compilation issues with libtool (and autoconf) with libusb-0.1.12 |
Date: | Tue, 3 Nov 2009 17:03:35 -0600 (CST) |
In regard to: Re: Running into cross-compilation issues with libtool (and...:
On 10/30/2009 01:53 PM, Nick Bowler wrote:On 13:19 Fri 30 Oct , Philip A. Prindeville wrote:The problem is that this is an early linkage on the build host, where the eventual DESTDIR hasn't yet been specified, but the resultant libusbpp.la ends up looking like:I suspect that you have two libtool libraries in the same source tree, with one linked against the other. Chances are, the compiled binaries in the .libs directory are perfectly fine, and libtool is destroying them when you run 'make DESTDIR=/path/to/staging/dir install'. So we have libfoo.la and libbar.la, libbar links with libfoo and. Furthermore, you have a version of libfoo already installed on the host system, in /usr/lib. You cross-compile the package, using --prefix=/usr/lib (since that is where it will finally end up). Then you do 'make DESTDIR=/path/to/staging/dir install', and libtool decides to re-link the libraries against the libraries in the final installed location. In this case, it is /usr/lib. The problem is that the libfoo in /usr/lib is the wrong one, since the cross-compiled libfoo never got installed there! The workaround here is to manually copy the libraries from .libs into your staging directory. IMHO the fix is to make libtool not re-link anything if DESTDIR is set -- correct me if I'm wrong, but it seems to me that the current behaviour cannot possibly be correct on any platform, even on the ones that require re-linking.That sounds about right, actually.
Nick *is* right, at least about the scenario that triggers the problem. I've observed this behavior and asked about it on the list in the past. I run into this problem on a regular basis when building software for packaging on Solaris (not cross-compiling, just installing into DESTDIR for packaging). I'm not certain if skipping the relink if DESTDIR is being used is the right fix for all platforms. My guess was that libtool's -inst-prefix-dir option needs to be augmented so that it correctly re-links against the library that it just installed in DESTDIR even though the .la file it will generate should *not* include the DESTDIR part of any paths (it should have the final destination, not the temporary area used for staging). This problem has been with libtool since the -inst-prefix-dir option was added, which I believe happened early in the 1.5.x series. Tim -- Tim Mooney address@hidden Enterprise Computing & Infrastructure 701-231-1076 (Voice) Room 242-J6, IACC Building 701-231-8541 (Fax) North Dakota State University, Fargo, ND 58105-5164
[Prev in Thread] | Current Thread | [Next in Thread] |