[OE-core] Issue of Yocto multilib sdk

Laurentiu Palcu laurentiu.palcu at intel.com
Fri Jul 26 13:56:17 UTC 2013


On Fri, Jul 26, 2013 at 12:36:21PM +0000, Alexandru-Cezar Sardan wrote:
>  
> > Hi experts, 
> > 
> > I use Yocto to generate multilib sdk, I append following content in my 
> local.conf. 
> > 
> >     require conf/multilib.conf
> >     MULTILIBS = "multilib:lib64"
> >     DEFAULTTUNE_virtclass-multilib-lib64 = "x86-64"
> > 
> >     IMAGE_INSTALL_append = " \
> >         ${ <at> multilib_pkg_extend(d, "binutils")} \
> > 
> > 
> >         ${ <at> multilib_pkg_extend(d, "eglibc")} \
> > 
> >         ${ <at> multilib_pkg_extend(d, "eglibc-dev")} \
> >         ${ <at> multilib_pkg_extend(d, "eglibc-staticdev")} \
> > 
> >         ${ <at> multilib_pkg_extend(d, "gcc")} \
> > 
> >         ${ <at> multilib_pkg_extend(d, "glib-2.0")} \
> >         ${ <at> multilib_pkg_extend(d, "glib-2.0-dev")} \
> > 
> >         ${ <at> multilib_pkg_extend(d, "libgcc-dev")} \
> >         ${ <at> multilib_pkg_extend(d, "libstdc++")} \
> > 
> >         ${ <at> multilib_pkg_extend(d, "libstdc++-dev")} \
> >         ${ <at> multilib_pkg_extend(d, "libstdc++-staticdev")} \
> >     "
> > 
> > 
> > 
> > The sdk is generated successfully, I installed poky-eglibc-x86_64-i586-
> toolchain-gmae-1.4+snapshot-20130619.sh in the default 
> path(/opt/poky/1.4+snapshot/). 
> > 
> > 1. 32bit build for my test C program, it passed,
> >     $ source /opt/poky/1.4+snapshot/environment-setup-i586-poky-linux
> >     $ $CC mytest.c -o mytest.c
> > 2. 64bit build for the same test C program, it failed.
> >     $ source /opt/poky/1.4+snapshot/environment-setup-x86_64-pokymllib64-
> linux
> >     $ $CC mytest.c -o mytest
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: cannot find 
> crtbegin.o: No such file or directory
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: cannot find -lgcc
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: skipping 
> incompatible /opt/poky/1.4+snapshot/sysroots/i586-poky-linux/lib/libgcc_s.so 
> when searching for -lgcc_s
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: skipping 
> incompatible /opt/poky/1.4+snapshot/sysroots/i586-poky-linux/lib/libgcc_s.so 
> when searching for -lgcc_s
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: cannot find -lgcc_s
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: skipping 
> incompatible /opt/poky/1.4+snapshot/sysroots/i586-poky-linux/usr/lib/libc.so 
> when searching for -lc
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: skipping 
> incompatible /opt/poky/1.4+snapshot/sysroots/i586-poky-linux/usr/lib/libc.so 
> when searching for -lc
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: cannot find -lc
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: cannot find -lgcc
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: skipping 
> incompatible /opt/poky/1.4+snapshot/sysroots/i586-poky-linux/lib/libgcc_s.so 
> when searching for -lgcc_s
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: skipping 
> incompatible /opt/poky/1.4+snapshot/sysroots/i586-poky-linux/lib/libgcc_s.so 
> when searching for -lgcc_s
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: cannot find -lgcc_s
> > /opt/poky/1.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-
> pokymllib64-linux/gcc/x86_64-pokymllib64-linux/4.7.2/ld: cannot find 
> crtend.o: No such file or directory
> > collect2: error: ld returned 1 exit status
> > 
> > Am I missing something?

There could be several issues here:
1. default library path for 64bit is wrong... You can inspect it by
looking at SEARCH_DIR in the linker script. Just run:

$CC -o mytest -Wl,-verbose mytest.c

Then you can try to set the library path explicitly with -L. See if it
works.

2. you don't have the 64bit libraries and it falls back to looking into
/lib or /usr/lib which contain the 32bit libraries...

Do you have any lib64/ usr/lib64/ in your target sysroot?

Thanks,
Laurentiu
 
> > 
> > 
> > Cheers, 
> > 
> > Bruce
> > 
> > 
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at ...
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
> > 
> 
> I am experiencing the same issue with poky-dylan-9.0.0.
> Can someone please help with this problem?
> 
> Kind regards,
> Alex
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list