From: Mark Hatle <mark.hatle@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: Re: Query for multilib support in Yocto
Date: Thu, 23 May 2013 09:46:32 -0500 [thread overview]
Message-ID: <519E2BC8.2090905@windriver.com> (raw)
In-Reply-To: <CA452391058F6D4E9715FB2C29D9312A01570F29@039-SN2MPN1-021.039d.mgd.msft.net>
On 5/23/13 3:46 AM, Luo Zhenhua-B19537 wrote:
> Hi all,
>
> I am trying the multilib feature of Yocto, and I want to make sure if below scenarios are supported, who can help to clarify? Thanks in advance.
>
> For standalone toolchain built by "bitbake meta-toolchain"
> 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 know, you can create a multilib SDK, but you will need multilib gcc
binaries. We don't yet have singular gcc with multilib cflag options available.
(At Wind River we use a prebuilt binary toolchain that does allow this single
binary/multilib target behavior. Other then that we are using the standard SDK
support and it is working for us.)
> 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.)
It was discussed a while back that we really want to follow the single binary,
multilib target model -- but I don't know where that is from a development
perspective.
> 2. Can both 32b and 64b application be executed in the same rootfs image with multilib support?
Yes. As long as the multilib support is configured properly (i.e. different
baselib for each tune) it works properly today. I've been building 1.4 (and
master) recently for x86/x86_64 systems with multilib support and as far as I
can tell it is working correctly.
On Power there have been some issues reported in the past with the prelinker and
PPC64 binaries. But other then that, it should be working fine.
> BTW, may I know how the default value of LIBRARY_PATH is set? 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@p5020ds:~# gcc -m64 my_test.c -o my_test
> /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/bin/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/bin/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/bin/ld: cannot find -lgcc
> /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/bin/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/bin/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/bin/ld: cannot find libgcc_s.so.1
> /usr/lib/gcc/powerpc-poky-linux/4.7.2/../../../../powerpc-poky-linux/bin/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/bin/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/bin/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.
At one point we had installed the full canonical name of the gcc binary, so
"powerpc-poky-linux-gcc" would be 32-bit, and "powerpc64-poky-linux-gcc" would
be the 64-bit version. I don't know if that is still true however.
--Mark
> collect2: error: ld returned 1 exit status
> root@p5020ds:~# cat my_test.c
> int main()
> {
> int a=0;
>
> return a;
> }
>
>
> Best Regards,
>
> Zhenhua
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
next prev parent reply other threads:[~2013-05-23 14:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-23 8:46 Query for multilib support in Yocto Luo Zhenhua-B19537
2013-05-23 14:46 ` Mark Hatle [this message]
2013-05-24 8:25 ` Luo Zhenhua-B19537
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=519E2BC8.2090905@windriver.com \
--to=mark.hatle@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox