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
bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer, http://www.GraphicsMagick.org/
_______________________________________________
https://lists.gnu.org/mailman/listinfo/libtool