libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: libtool is not wanting to play nicely with cross compiler


From: Bob Friesenhahn
Subject: Re: libtool is not wanting to play nicely with cross compiler
Date: Tue, 7 Apr 2015 08:26:13 -0500 (CDT)
User-agent: Alpine 2.01 (GSO 1266 2009-07-14)

On Mon, 6 Apr 2015, Andy Falanga (afalanga) wrote:

I'm working on compiling some code for an ARM processor on a Xilinx board. I did not do the work of configuring the cross compiler and so am ignorant about some parts of this process.

I recommend reading the Autoconf manual as pertains to cross-compilation.

How are your cross-tools named?  Tool naming is important.

What are the arguments that you passed to configure?

I've finally gotten my configure script to complete and was running the main compilation when I ran into this error:

libtool: link: warning: 
`/src/afalanga/crisscross/tmp/sysroots/zc706-zynq7/usr/lib/libstdc++.la' seems 
to be moved
libtool: link: warning: 
`/src/afalanga/crisscross/tmp/sysroots/zc706-zynq7/usr/lib/libstdc++.la' seems 
to be moved
libtool: link: warning: 
`/src/afalanga/crisscross/tmp/sysroots/zc706-zynq7/usr/lib/libstdc++.la' seems 
to be moved
/bin/grep: /usr/lib/libstdc++.la: No such file or directory
/bin/sed: can't read /usr/lib/libstdc++.la: No such file or directory
libtool: link: `/usr/lib/libstdc++.la' is not a valid libtool archive

The .la files are just text files which libtool uses to remember build information to be re-used when using the associated library. The complaint about being moved is because these files are located in a different place than when they were originally installed (by whoever built/packaged them). The .la file contains paths which are not correct for your current library installation.

libtool is pointed in the right direction because the file libstdc++.la, in the directory indicated, is the one it should be using for cross compilation. However, the file contains this:

libdir='/usr/lib'

I know this is the source of the warning, but why would I be getting the warning? If my understanding is correct, the stuff in this directory is made into the image what it placed onto the embedded system. Thus, when that OS is running, libstdc++.la would actually be in '/usr/lib'.

However, it seems that libtool decides that it will look in '/uar/lib' for libstdc++.la anyway and ignore that it found the file where it was told it would. Well, just as is indicated, there isn't a libstdc++.la file in '/usr/lib'. How do I make libtool happy with the la archive (is that what they're called) that it should be using?

Libtool does work for cross-compilation mode but tools must be named appropriately, autoconf arguments must be supplied appropriately, and the build toolchain needs to be smart enough to use its own sysroot for cross-compilation rather than accidentally using host system libraries/headers.

Not every configure script is appropriately prepared for cross-compilation since some tests are impossible when cross-compiling and so appropriate defaults need to be supplied.

Bob
--
Bob Friesenhahn
address@hidden, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]