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

Bob Friesenhahn <[email protected]>
Newsgroups gmane.comp.gnu.libtool.general
Message-ID <[email protected]>
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
[email protected], http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/

_______________________________________________
https://lists.gnu.org/mailman/listinfo/libtool
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.