[OE-core] Query for multilib support in Yocto

Luo Zhenhua-B19537 B19537 at freescale.com
Fri May 24 08:25:55 UTC 2013


Hi Mark,

Thanks for your comments. 

> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org
> [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of Mark Hatle
> Sent: Thursday, May 23, 2013 10:47 PM
> 
> On 5/23/13 3:46 AM, Luo Zhenhua-B19537 wrote:
> >
> > For gcc with multilib support running on target board 1. Can the same
> > gcc binary build both 32b and 64b applications or two different gcc
> binaries(one is for 32b, the other is for 64b) are required?
> 
> As far as I'm aware the same issue above holds true here.  You still need
> multiple compiler binaries, one for each multilib.  (Khem Raj would know
> if this is still true however.)
[Luo Zhenhua-B19537] I see an successful case of single gcc on target can build both 32b and 64b app, https://bugzilla.yoctoproject.org/show_bug.cgi?id=1369. Is that still true in recent Yocto? 
 
> I experienced following error when I use gcc(32bit rootfs with multilib
> support) to do 64b build, I find the linker search libraries in /usr/lib
> and /lib instead of /usr/lib64 and /lib64.
> >
> > root at p5020ds:~# gcc -m64 my_test.c -o my_test
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: skipping incompatible
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../powerpc-poky-linux/4.7.
> > 2/libgcc.a when searching for -lgcc
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: skipping incompatible
> > /usr/lib/powerpc-poky-linux/4.7.2/libgcc.a when searching for -lgcc
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: cannot find -lgcc
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: skipping incompatible /lib/../lib/libgcc_s.so.1 when searching
> > for libgcc_s.so.1
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: skipping incompatible //lib/libgcc_s.so.1 when searching for
> > libgcc_s.so.1
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: cannot find libgcc_s.so.1
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: skipping incompatible
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../powerpc-poky-linux/4.7.
> > 2/libgcc.a when searching for libgcc.a
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: skipping incompatible
> > /usr/lib/powerpc-poky-linux/4.7.2/libgcc.a when searching for libgcc.a
> > /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/b
> > in/ld: cannot find libgcc.a
> 
> Ya, this is running the 'wrong' toolchain.  From the errors it appears to
> me that it's the 32-bit gcc, attempting to compile for 64-bit.  There is
> a command that will tell you what architectures gcc was built to support,
> but unfortunately I don't remember it offhand.
[Luo Zhenhua-B19537] The test program can be compiled and assembled correctly, but link failed. Seems like -m64 influenced powerpc-poky-linux-gcc, but not influenced powerpc-poky-linux-ld, LIBRARY_PATH is same for both 32b and 64b build, how can the value of LIBRARY_PATH be set to different value if -m64 is passed?

root at p5020ds:~# gcc -m64 -c my_test.c 
root at p5020ds:~# ls -l
total 3
-rw-r--r-- 1 root root   30 May 23 09:40 my_test.c
-rw-r--r-- 1 root root 1208 May 24 08:09 my_test.o
root at p5020ds:~# file my_test.o 
my_test.o: ELF 64-bit MSB relocatable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), not stripped
root at p5020ds:~# cat my_test.c 
int main()
{
    return 0;
}


Best Regards,

Zhenhua




More information about the Openembedded-core mailing list