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