[yocto] Need clarification on some terms

Rifenbark, Scott M scott.m.rifenbark at intel.com
Wed Jun 12 05:24:07 PDT 2013


See http://www.yoctoproject.org/docs/1.5/dev-manual/dev-manual.html#cross-development-toolchain for the changes that I have made to the "Cross-Development Toolchain" term description.  Let me know if this helps.  Also let me know if I have botched anything.

Thanks, 
Scott

>-----Original Message-----
>From: yocto-bounces at yoctoproject.org [mailto:yocto-
>bounces at yoctoproject.org] On Behalf Of michael at cubic.org
>Sent: Wednesday, June 12, 2013 4:17 AM
>To: yocto at yoctoproject.org
>Subject: Re: [yocto] Need clarification on some terms
>
>> "Cross-Development Toolchain: A collection of software development
>tools
>> and
>> utilities that allow you to develop software for targeted
>architectures."
>> Is
>> that different from the toolchain that bitbake builds in the
>beginning,
>> and
>> then uses to build the image? If so, what is it?
>
>A "cross development toolchain" is a toolchain that runs on an
>architecture (cpu+os+libc) that is different from the architecture it
>generates code for. That can even be a toolchain running on an IA64-
>Linux
>machine generating object-code for an IA32-Linux machine.
>
>> "Following is a list of toolchain recipes..." This is followed by
>> gcc-cross-initial, gcc-cross-intermediate, gcc-cross. All three of
>these
>> things say that the toolchain runs on the host and is used to build
>> software
>> for the target. So why are there three of them? What are the
>differences
>> among them?
>
>The gcc must be build multiple times when you bootstrap it.
>For building the gcc you need to build the libc and therefor you need to
>build the linux kernel headers and therefor you need the gcc. Oops.
>
>Thats why you first build a gcc only with c support and no libc first.
>Use that to generate the kernel headers, then build the initial libc and
>then another gcc with libc support and all the frontends you need
>(c,c++,java,fortran,..). Why there is the gcc-cross-intermediate I am
>not
>shure, but there will be a reason and another one can clarify that.
>
>> It also says that each one is a "native" package. In my
>> experience, a "native" toolchain has always meant a toolchain that
>> produces
>> code for the same machine that the toolchain runs on, while a "cross"
>> toolchain produces code for a different machine. That's obviously not
>what
>> "native" means in this context, so what does it mean?
>
>In terms of openembedded a "native" package is a package that contains
>code that is intended to run on the build machine (your workstation).
>The
>cross-compiler runs on your build-machine to produce code for your
>target-machine. Thats why it is a "native" package. And there are a lot
>more "native" packages than only the compiler.
>
>> The documentation makes frequent references to "the SDK" without ever
>> defining it. I know what it means generically, but what is it in the
>Yocto
>> context? And why does the SDK involve yet another set of three
>toolchains?
>> (Oh, and why is one of them called "canadian"?)
>
>A canadian-cross is a term from the compiler stuff, not specific to the
>Yocto Project or Poky or Openembedded.
>Building a canadian-cross is the process of build a toolchain on
>architecture A that runs on architecture B and produces object-code for
>architecture C. An example is building a gcc on an IA32 architecture,
>that
>will run on an ARM, producing code for an M68K. Yes, that does make
>sence,
>if the ARM machine does not have the resources to be able to bootstrap
>the
>compiler by itself.
>
>Hope that made some things clear.
>
>Michael
>_______________________________________________
>yocto mailing list
>yocto at yoctoproject.org
>https://lists.yoctoproject.org/listinfo/yocto



More information about the yocto mailing list