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?

Cheers,

Richard


_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to