On Thu, Oct 20, 2011 at 3:08 PM, Richard Purdie <[email protected]> wrote: > On Thu, 2011-10-20 at 13:24 -0700, Tom Rini wrote: >> On Thu, Oct 20, 2011 at 9:54 AM, Richard Purdie >> <[email protected]> wrote: >> > On Thu, 2011-10-20 at 08:22 +0000, James Limbouris wrote: >> >> Hi, >> >> >> >> I have been using meta-toolchain-qte in the past to cross compile a Qt >> >> app, and the Linux kernel. >> >> Recently I replaced my old SDK image with a fresh one, and found that I >> >> could not link vmlinux anymore. >> >> >> >> When building the kernel, I use the following ('rica' is the distribution >> >> name): >> >> export >> >> PATH=$PATH:/usr/local/rica-eglibc-i686-armv5te/sysroots/i686-ricasdk-linux/usr/bin/armv5te-rica-linux-gnueabi/ >> >> make ARCH=arm CROSS_COMPILE=arm-rica-linux-gnueabi- zImage >> >> >> >> The new error message is: >> >> >> >> Kernel: arch/arm/boot/Image is ready >> >> AS arch/arm/boot/compressed/head.o >> >> GZIP arch/arm/boot/compressed/piggy.gz >> >> CC arch/arm/boot/compressed/misc.o >> >> AS arch/arm/boot/compressed/piggy.o >> >> LD arch/arm/boot/compressed/vmlinux >> >> arm-rica-linux-gnueabi-ld: cannot find libgcc.a: No such file or directory >> >> >> >> Comparing the build with the old sdk to the build with the new one, I >> >> find that the command line for linking has changed from: >> >> >> >> arm-rica-linux-gnueabi-ld -EL --defsym zreladdr=0x80008000 --defsym >> >> initrd_phys=0x80800000 --defsym params_phys=0x80000100 -p --no-undefined >> >> -X >> >> /usr/local/rica-eglibc-i686-armv5te/sysroots/arm-rica-linux-gnueabi/usr/lib/arm-rica-linux-gnueabi/4.5.4/libgcc.a >> >> -T arch/arm/boot/compressed/vmlinux.lds arch/arm/boot/compressed/head.o >> >> arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/misc.o -o >> >> arch/arm/boot/compressed/vmlinux >> >> >> >> to: >> >> >> >> arm-rica-linux-gnueabi-ld -EL --defsym zreladdr=0x80008000 --defsym >> >> initrd_phys=0x80800000 --defsym params_phys=0x80000100 -p --no-undefined >> >> -X libgcc.a -T arch/arm/boot/compressed/vmlinux.lds >> >> arch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.o >> >> arch/arm/boot/compressed/misc.o -o arch/arm/boot/compressed/vmlinux >> >> >> >> So libgcc.a has lost its path qualification. >> >> I also straced the two linker commands, and found that they differed in >> >> one sequence. >> >> >> >> Old: >> >> lstat64("/usr/local/rica-eglibc-i686-armv5te", {st_mode=S_IFDIR|0755, >> >> st_size=4096, ...}) = 0 >> >> lstat64("/usr/local/rica-eglibc-i686-armv5te/sysroots", >> >> {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 >> >> lstat64("/usr/local/rica-eglibc-i686-armv5te/sysroots/arm-rica-linux-gnueabi", >> >> {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 >> >> >> >> New: >> >> lstat64("/usr/local/rica-eglibc-i686-armv5te", {st_mode=S_IFDIR|0755, >> >> st_size=4096, ...}) = 0 >> >> lstat64("/usr/local/rica-eglibc-i686-armv5te/sysroots", >> >> {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 >> >> lstat64("/usr/local/rica-eglibc-i686-armv5te/sysroots/arm-rica-linux-gnueabi", >> >> 0xbffe67cc) = -1 ENOENT (No such file or directory) >> >> >> >> Both toolchains are looking for a sysroot at 'arm-rica-linux-gnueabi', >> >> but the new toolchain should be looking at 'armv5te-rica-linux-gnueabi', >> >> as the names have changed. >> >> I'm not yet acquainted with the darker arts of toolchain generation. Can >> >> anyone help with this? >> > >> > There should be a --sysroot option being passed to the compiler/linker >> > to tell which sysroot to look at. We did recently change the sysroot >> > location to reflect the target architecture it was optimized for but >> > this does mean the compiler and other tools need the correct sysroot >> > path to be specified. The environment script that ships with the >> > toolchain should do this? >> >> At least not for things like u-boot and the kernel, no, this isn't >> enough. Just re-confirmed. > > The place I'd start looking is how to ensure the tools get called with > the right flags. > > The end result may be we need to create separate cross bin directories > for each target sysroot with wrapper scripts for the tools to ensure the > right flags get passed. Rather nasty and I'd prefer not to but I don't > see easy alternatives if getting the flags to the tools is a problem.
linker also has its own notion of sysroot when invoked bare and I suspect thats coming into play here thats why I asked for build logs. > > Cheers, > > Richard > > > > > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
