x86_64 multilib system

Casey Marshall cmarshall at pacificbiosciences.com
Thu Feb 21 19:57:50 UTC 2008


I'm trying to use OpenEmbedded to build a x86_64 system (hosted on x86),
and am running into many errors getting gcc-cross to build properly
here.

GCC 4.1.x seems to automatically add /usr/include to the header search
path on x86, and this fails to work with the no-local-headers patch.

GCC 4.2.x will mostly build, but will try to link 32-bit libraries
against the (only) 64-bit glibc. Adding --disable-multilib to the
configure flags also fails, because some parts of the GCC install seem
to be looking in lib64 still, and the build of gcc-cross fails:

> | /bin/sh /oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/libiberty/../mkinstalldirs /oe/tmp/cross/x86_64-linux/lib/`/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux/./gcc/xgcc -B/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux/./gcc/ -isystem/oe/tmp/staging/i686-linux/include -B/oe/tmp/cross/x86_64-linux/bin/ -B/oe/tmp/cross/x86_64-linux/lib/ -isystem /oe/tmp/cross/x86_64-linux/include -isystem /oe/tmp/cross/x86_64-linux/sys-include -g -Os -print-multi-os-directory`
> | /usr/bin/install -c -m 644 ./libiberty.a /oe/tmp/cross/x86_64-linux/lib/`/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux/./gcc/xgcc -B/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux/./gcc/ -isystem/oe/tmp/staging/i686-linux/include -B/oe/tmp/cross/x86_64-linux/bin/ -B/oe/tmp/cross/x86_64-linux/lib/ -isystem /oe/tmp/cross/x86_64-linux/include -isystem /oe/tmp/cross/x86_64-linux/sys-include -g -Os -print-multi-os-directory`/./libiberty.an
> | ( cd /oe/tmp/cross/x86_64-linux/lib/`/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux/./gcc/xgcc -B/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux/./gcc/ -isystem/oe/tmp/staging/i686-linux/include -B/oe/tmp/cross/x86_64-linux/bin/ -B/oe/tmp/cross/x86_64-linux/lib/ -isystem /oe/tmp/cross/x86_64-linux/include -isystem /oe/tmp/cross/x86_64-linux/sys-include -g -Os -print-multi-os-directory` ; chmod 644 ./libiberty.an; /oe/tmp/cross/x86_64-linux/bin/ranlib ./libiberty.an )
> | /bin/sh: line 0: cd: /oe/tmp/cross/x86_64-linux/lib/../lib64: No such file or directory
> | chmod: cannot access `./libiberty.an': No such file or directory
> | /oe/tmp/cross/x86_64-linux/bin/ranlib: './libiberty.an': No such file
> | make[2]: *** [install_to_tooldir] Error 1
> | make[2]: Leaving directory `/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux/x86_64-linux/libiberty'
> | make[1]: *** [install-target-libiberty] Error 2
> | make[1]: Leaving directory `/oe/tmp/work/x86_64-linux/gcc-cross-4.2.2-r3/gcc-4.2.2/build.i686-linux.x86_64-linux'
> | make: *** [install] Error 2
> | FATAL: oe_runmake failed

I *think* what I'd prefer doing is installing a multilib glibc, since it
will actually come in handy in the final system. Is there a
straightforward way to do that?

Thanks.




More information about the Openembedded-users mailing list