* Need clarification on some terms
@ 2013-06-12 4:07 Paul D. DeRocco
2013-06-12 5:58 ` Rifenbark, Scott M
2013-06-12 11:16 ` michael
0 siblings, 2 replies; 20+ messages in thread
From: Paul D. DeRocco @ 2013-06-12 4:07 UTC (permalink / raw)
To: yocto
I'm trying a second time to see if I can learn this system. Section 3.4
contains a short glossary which explains some things and seems to obscure
others. So perhaps someone can clear up a few simple things.
"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?
"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? 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?
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"?)
--
Ciao, Paul D. DeRocco
Paul mailto:pderocco@ix.netcom.com
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 4:07 Need clarification on some terms Paul D. DeRocco
@ 2013-06-12 5:58 ` Rifenbark, Scott M
2013-06-12 11:16 ` michael
1 sibling, 0 replies; 20+ messages in thread
From: Rifenbark, Scott M @ 2013-06-12 5:58 UTC (permalink / raw)
To: Paul D. DeRocco, yocto@yoctoproject.org
Paul,
Thanks for pointing out these areas where it is confusing. Maybe someone on the team can add some comments about the gcc-* recipe stuff. I don't have that understanding but if I am giving more explanation I can update that entry. I believe the term Cross-Development Toolchain" is the same that BitBake builds in the beginning. If not, please someone from the team add some clarification for me and I will update. I will look for the term "SDK" throughout and remedy that. In the beginning of the development of the docs we used the term SDK liberally. Then we decided to weed it out. Seems I need to completely finish that task.
Scott
>-----Original Message-----
>From: yocto-bounces@yoctoproject.org [mailto:yocto-
>bounces@yoctoproject.org] On Behalf Of Paul D. DeRocco
>Sent: Tuesday, June 11, 2013 9:07 PM
>To: yocto@yoctoproject.org
>Subject: [yocto] Need clarification on some terms
>
>I'm trying a second time to see if I can learn this system. Section 3.4
>contains a short glossary which explains some things and seems to
>obscure
>others. So perhaps someone can clear up a few simple things.
>
>"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?
>
>"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? 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?
>
>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"?)
>
>--
>
>Ciao, Paul D. DeRocco
>Paul mailto:pderocco@ix.netcom.com
>
>
>_______________________________________________
>yocto mailing list
>yocto@yoctoproject.org
>https://lists.yoctoproject.org/listinfo/yocto
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 4:07 Need clarification on some terms Paul D. DeRocco
2013-06-12 5:58 ` Rifenbark, Scott M
@ 2013-06-12 11:16 ` michael
2013-06-12 11:32 ` Bill Traynor
` (2 more replies)
1 sibling, 3 replies; 20+ messages in thread
From: michael @ 2013-06-12 11:16 UTC (permalink / raw)
To: yocto
> "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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 11:16 ` michael
@ 2013-06-12 11:32 ` Bill Traynor
2013-06-12 11:36 ` Rifenbark, Scott M
2013-06-12 11:59 ` Paul Eggleton
2013-06-12 12:24 ` Rifenbark, Scott M
2 siblings, 1 reply; 20+ messages in thread
From: Bill Traynor @ 2013-06-12 11:32 UTC (permalink / raw)
To: michael; +Cc: yocto@yoctoproject.org
[-- Attachment #1: Type: text/plain, Size: 3512 bytes --]
On Wed, Jun 12, 2013 at 7:16 AM, <michael@cubic.org> wrote:
> > "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.
>
And for what it's worth, the reason it's called "Canadian" is because at
the time of it's naming, Canada had 3 political parties.
http://en.wikipedia.org/wiki/Cross_compiler#Canadian_Cross
> Hope that made some things clear.
>
> Michael
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
[-- Attachment #2: Type: text/html, Size: 4812 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 11:32 ` Bill Traynor
@ 2013-06-12 11:36 ` Rifenbark, Scott M
0 siblings, 0 replies; 20+ messages in thread
From: Rifenbark, Scott M @ 2013-06-12 11:36 UTC (permalink / raw)
To: Bill Traynor, michael@cubic.org; +Cc: yocto@yoctoproject.org
[-- Attachment #1: Type: text/plain, Size: 3842 bytes --]
That little tidbit is interesting... Thanks Bill. BTW - I am incorporating some of this information into "Terms" section to help clear up stuff.
Scott
From: yocto-bounces@yoctoproject.org [mailto:yocto-bounces@yoctoproject.org] On Behalf Of Bill Traynor
Sent: Wednesday, June 12, 2013 4:33 AM
To: michael@cubic.org
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] Need clarification on some terms
On Wed, Jun 12, 2013 at 7:16 AM, <michael@cubic.org<mailto:michael@cubic.org>> wrote:
> "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.
And for what it's worth, the reason it's called "Canadian" is because at the time of it's naming, Canada had 3 political parties.
http://en.wikipedia.org/wiki/Cross_compiler#Canadian_Cross
Hope that made some things clear.
Michael
_______________________________________________
yocto mailing list
yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
https://lists.yoctoproject.org/listinfo/yocto
[-- Attachment #2: Type: text/html, Size: 8441 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 11:16 ` michael
2013-06-12 11:32 ` Bill Traynor
@ 2013-06-12 11:59 ` Paul Eggleton
2013-06-12 12:24 ` Rifenbark, Scott M
` (2 more replies)
2013-06-12 12:24 ` Rifenbark, Scott M
2 siblings, 3 replies; 20+ messages in thread
From: Paul Eggleton @ 2013-06-12 11:59 UTC (permalink / raw)
To: yocto
On Wednesday 12 June 2013 04:16:30 michael@cubic.org wrote:
> Paul D. DeRocco wrote on Tuesday, June 11, 2013 at 9:07 PM:
> > "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.
gcc-cross-intermediate is gone as of 1.3; as I understand it current versions
of glibc can be compiled using gcc-cross-initial so the intermediate step is
no longer required. We should remove mention of this from the documentation
(other than in the migration section that is).
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 11:16 ` michael
2013-06-12 11:32 ` Bill Traynor
2013-06-12 11:59 ` Paul Eggleton
@ 2013-06-12 12:24 ` Rifenbark, Scott M
2 siblings, 0 replies; 20+ messages in thread
From: Rifenbark, Scott M @ 2013-06-12 12:24 UTC (permalink / raw)
To: michael@cubic.org, yocto@yoctoproject.org
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@yoctoproject.org [mailto:yocto-
>bounces@yoctoproject.org] On Behalf Of michael@cubic.org
>Sent: Wednesday, June 12, 2013 4:17 AM
>To: yocto@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@yoctoproject.org
>https://lists.yoctoproject.org/listinfo/yocto
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 11:59 ` Paul Eggleton
@ 2013-06-12 12:24 ` Rifenbark, Scott M
2013-06-12 12:27 ` Rifenbark, Scott M
2013-06-12 19:51 ` Paul D. DeRocco
2 siblings, 0 replies; 20+ messages in thread
From: Rifenbark, Scott M @ 2013-06-12 12:24 UTC (permalink / raw)
To: Paul Eggleton, yocto@yoctoproject.org
Ahh... thanks. Just saw this after publishing some other changes.
Thanks,
Scott
>-----Original Message-----
>From: Paul Eggleton [mailto:paul.eggleton@linux.intel.com]
>Sent: Wednesday, June 12, 2013 5:00 AM
>To: yocto@yoctoproject.org
>Cc: Rifenbark, Scott M
>Subject: Re: [yocto] Need clarification on some terms
>
>On Wednesday 12 June 2013 04:16:30 michael@cubic.org wrote:
>> Paul D. DeRocco wrote on Tuesday, June 11, 2013 at 9:07 PM:
>> > "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.
>
>gcc-cross-intermediate is gone as of 1.3; as I understand it current
>versions
>of glibc can be compiled using gcc-cross-initial so the intermediate
>step is
>no longer required. We should remove mention of this from the
>documentation
>(other than in the migration section that is).
>
>Cheers,
>Paul
>
>--
>
>Paul Eggleton
>Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 11:59 ` Paul Eggleton
2013-06-12 12:24 ` Rifenbark, Scott M
@ 2013-06-12 12:27 ` Rifenbark, Scott M
2013-06-12 12:31 ` Paul Eggleton
2013-06-12 19:51 ` Paul D. DeRocco
2 siblings, 1 reply; 20+ messages in thread
From: Rifenbark, Scott M @ 2013-06-12 12:27 UTC (permalink / raw)
To: Paul Eggleton, yocto@yoctoproject.org
This begs the question for gcc-crosssdk-intermediate... Is that gone as well?
>-----Original Message-----
>From: Paul Eggleton [mailto:paul.eggleton@linux.intel.com]
>Sent: Wednesday, June 12, 2013 5:00 AM
>To: yocto@yoctoproject.org
>Cc: Rifenbark, Scott M
>Subject: Re: [yocto] Need clarification on some terms
>
>On Wednesday 12 June 2013 04:16:30 michael@cubic.org wrote:
>> Paul D. DeRocco wrote on Tuesday, June 11, 2013 at 9:07 PM:
>> > "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.
>
>gcc-cross-intermediate is gone as of 1.3; as I understand it current
>versions
>of glibc can be compiled using gcc-cross-initial so the intermediate
>step is
>no longer required. We should remove mention of this from the
>documentation
>(other than in the migration section that is).
>
>Cheers,
>Paul
>
>--
>
>Paul Eggleton
>Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 12:27 ` Rifenbark, Scott M
@ 2013-06-12 12:31 ` Paul Eggleton
0 siblings, 0 replies; 20+ messages in thread
From: Paul Eggleton @ 2013-06-12 12:31 UTC (permalink / raw)
To: Rifenbark, Scott M; +Cc: yocto
On Wednesday 12 June 2013 12:27:16 Rifenbark, Scott M wrote:
> This begs the question for gcc-crosssdk-intermediate... Is that gone as
> well?
Yes.
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 11:59 ` Paul Eggleton
2013-06-12 12:24 ` Rifenbark, Scott M
2013-06-12 12:27 ` Rifenbark, Scott M
@ 2013-06-12 19:51 ` Paul D. DeRocco
2013-06-12 19:53 ` Rifenbark, Scott M
` (4 more replies)
2 siblings, 5 replies; 20+ messages in thread
From: Paul D. DeRocco @ 2013-06-12 19:51 UTC (permalink / raw)
To: 'Paul Eggleton', 'Rifenbark, Scott M'; +Cc: yocto
> From: Paul Eggleton
>
> gcc-cross-intermediate is gone as of 1.3; as I understand it
> current versions
> of glibc can be compiled using gcc-cross-initial so the
> intermediate step is
> no longer required. We should remove mention of this from the
> documentation
> (other than in the migration section that is).
Okay, so now there are two stages to each cross-compilation, so there's
gcc-cross-initial producing gcc-cross, and also gcc-crosssdk-initial
producing gcc-crosssdk. But is the difference between those two pairs that
the first pair ultimately produces a cross-compiler that runs on the host,
and the second pair ultimately produces a native compiler that runs on the
target? From what I can gather about the various references to "SDK", it
sounds like it's supposed to be a set of native tools that runs on the
target and produces output for the target. If that's true, then the new
descriptions are still wrong. Shouldn't gcc-cross be described as a "cross"
package rather than a "native", and shouldn't gcc-crosssdk be described as a
"native" binary that runs on the target? Or am I still fundamentally
misinterpreting these things?
For now, I really just need to know if I'm interested in the SDK, since I
have no intention of ever running compilations on my target system.
--
Ciao, Paul D. DeRocco
Paul mailto:pderocco@ix.netcom.com
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 19:51 ` Paul D. DeRocco
@ 2013-06-12 19:53 ` Rifenbark, Scott M
2013-06-12 20:51 ` Trevor Woerner
` (3 subsequent siblings)
4 siblings, 0 replies; 20+ messages in thread
From: Rifenbark, Scott M @ 2013-06-12 19:53 UTC (permalink / raw)
To: Paul D. DeRocco, 'Paul Eggleton'; +Cc: yocto@yoctoproject.org
I need this clarified as well. I am taking some "guesses" here and hoping for input.
Scott
>-----Original Message-----
>From: Paul D. DeRocco [mailto:pderocco@ix.netcom.com]
>Sent: Wednesday, June 12, 2013 12:51 PM
>To: 'Paul Eggleton'; Rifenbark, Scott M
>Cc: yocto@yoctoproject.org
>Subject: RE: [yocto] Need clarification on some terms
>
>> From: Paul Eggleton
>>
>> gcc-cross-intermediate is gone as of 1.3; as I understand it
>> current versions
>> of glibc can be compiled using gcc-cross-initial so the
>> intermediate step is
>> no longer required. We should remove mention of this from the
>> documentation
>> (other than in the migration section that is).
>
>Okay, so now there are two stages to each cross-compilation, so there's
>gcc-cross-initial producing gcc-cross, and also gcc-crosssdk-initial
>producing gcc-crosssdk. But is the difference between those two pairs
>that
>the first pair ultimately produces a cross-compiler that runs on the
>host,
>and the second pair ultimately produces a native compiler that runs on
>the
>target? From what I can gather about the various references to "SDK", it
>sounds like it's supposed to be a set of native tools that runs on the
>target and produces output for the target. If that's true, then the new
>descriptions are still wrong. Shouldn't gcc-cross be described as a
>"cross"
>package rather than a "native", and shouldn't gcc-crosssdk be described
>as a
>"native" binary that runs on the target? Or am I still fundamentally
>misinterpreting these things?
>
>For now, I really just need to know if I'm interested in the SDK, since
>I
>have no intention of ever running compilations on my target system.
>
>--
>
>Ciao, Paul D. DeRocco
>Paul mailto:pderocco@ix.netcom.com
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 19:51 ` Paul D. DeRocco
2013-06-12 19:53 ` Rifenbark, Scott M
@ 2013-06-12 20:51 ` Trevor Woerner
2013-06-12 21:04 ` Trevor Woerner
` (2 subsequent siblings)
4 siblings, 0 replies; 20+ messages in thread
From: Trevor Woerner @ 2013-06-12 20:51 UTC (permalink / raw)
To: Paul D. DeRocco; +Cc: yocto@yoctoproject.org
On Wed, Jun 12, 2013 at 3:51 PM, Paul D. DeRocco <pderocco@ix.netcom.com> wrote:
> Shouldn't gcc-cross be described as a "cross"
> package rather than a "native", and shouldn't gcc-crosssdk be described as a
> "native" binary that runs on the target? Or am I still fundamentally
> misinterpreting these things?
Your understanding is quite good, actually. But I think you're mixing
up your contexts :-)
If you were at GCC or LLVM conference talking to a bunch of compiler
geeks about compilers, they would use the term "native" to refer to a
compiler which produces executables for the same machine on which the
compile was taking place. As opposed to a cross-compiler which
produces executables meant to run on some other architecture.
If you were on the Yocto/OE mailing lists talking to people about
"native" packages or output, you would be differentiating between
packages which are meant to run on the build machine rather than on
the (embedded) target.
So in the Yocto world, any package meant to run on the build machine
is a "native" package. Even if that package is a cross-compiling
compiler (i.e. a non-native compiler).
:-D
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 19:51 ` Paul D. DeRocco
2013-06-12 19:53 ` Rifenbark, Scott M
2013-06-12 20:51 ` Trevor Woerner
@ 2013-06-12 21:04 ` Trevor Woerner
2013-06-12 21:58 ` Paul D. DeRocco
2013-06-12 21:32 ` William Mills
2013-06-13 7:10 ` Khem Raj
4 siblings, 1 reply; 20+ messages in thread
From: Trevor Woerner @ 2013-06-12 21:04 UTC (permalink / raw)
To: Paul D. DeRocco; +Cc: yocto@yoctoproject.org
On Wed, Jun 12, 2013 at 3:51 PM, Paul D. DeRocco <pderocco@ix.netcom.com> wrote:
> For now, I really just need to know if I'm interested in the SDK, since I
> have no intention of ever running compilations on my target system.
Imagine a company which produces embedded devices running Linux. There
are hardware engineers, and software people. Within the software group
there will always be that person (or group) which is responsible for
creating the Linux filesystem which runs on the device, i.e. the
"base" system, and there is the person or group responsible for
writing the "special sauce", the program which (or programs that) make
the device do the special thing that sets this device apart (i.e. the
application developer group).
Sometimes these people are the one and the same person, other times
they are separate people/groups.
Only the person/group responsible for the base filesystem need to know
about Yocto/OE. The "special sauce" people don't need to know anything
about packages, kernels, udev, /etc, or any of that other stuff. But
what they do need is a "compiler"[1] so they can build the software
for their target device.
The "compiler" they need has to be tied to the base filesystem. They
shouldn't be using a "compiler" that isn't aware of what libraries
(and therefore also be using the correct header files) that are going
to be available on the target, and they shouldn't be using a compiler
that isn't aware of the version of the kernel that will be available
on the target.
In order to help get the Yocto/OE group and the application group in
sync, Yocto/OE has this neat target which allows the platform team to
generate an "compiler" (i.e. the SDK) that the application group can
use which is, through the magic of the Yocto system, perfectly tuned
for the image the platform team is creating. In other words, the
application team doesn't need to perform Yocto builds in order to
write their software, they just need the Yocto people to generate an
SDK for them and produce a new SDK anytime anything on the target
image changes. The Yocto people can generate this SDK using a very
simple one-liner.
For a little more information, please have a look at item 19 of
https://github.com/twoerner/meta-trevor/blob/master/misc/notes
[1] When I say "compiler" here (in quotes) I really mean the
cross-compiler, the necessary header files, the cross-linker, etc,
etc...
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 19:51 ` Paul D. DeRocco
` (2 preceding siblings ...)
2013-06-12 21:04 ` Trevor Woerner
@ 2013-06-12 21:32 ` William Mills
2013-06-13 7:10 ` Khem Raj
4 siblings, 0 replies; 20+ messages in thread
From: William Mills @ 2013-06-12 21:32 UTC (permalink / raw)
To: Paul D. DeRocco; +Cc: 'Paul Eggleton', yocto
On 06/12/2013 03:51 PM, Paul D. DeRocco wrote:
> For now, I really just need to know if I'm interested in the SDK, since I
> have no intention of ever running compilations on my target system.
>
Trevor's answer has a lot of great background.
My short answer is gcc-cross is for use inside bitbake (in the host) and
gcc-crosssdk is for use outside of bitbake (still on the host). This
outside bitbake use case is the SDK Trevor described.
Why does gcc need to get built differently between these two use cases?
I gave up asking this many years ago and accepted it as "something I
can not change" for my own serenity. I am sure Paul or Khem could give
the detail. The sdk version does have extra stuff to make it
relocatable etc that is not needed inside of bitbake. However I don't
know why we don't always build the sdk-able version.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 21:04 ` Trevor Woerner
@ 2013-06-12 21:58 ` Paul D. DeRocco
2013-06-12 22:10 ` Paul D. DeRocco
0 siblings, 1 reply; 20+ messages in thread
From: Paul D. DeRocco @ 2013-06-12 21:58 UTC (permalink / raw)
To: 'Trevor Woerner'; +Cc: yocto
> From: Trevor Woerner
>
> Imagine a company which produces embedded devices running Linux. There
> are hardware engineers, and software people. Within the software group
> there will always be that person (or group) which is responsible for
> creating the Linux filesystem which runs on the device, i.e. the
> "base" system, and there is the person or group responsible for
> writing the "special sauce", the program which (or programs that) make
> the device do the special thing that sets this device apart (i.e. the
> application developer group).
>
> Sometimes these people are the one and the same person, other times
> they are separate people/groups.
>
> Only the person/group responsible for the base filesystem need to know
> about Yocto/OE. The "special sauce" people don't need to know anything
> about packages, kernels, udev, /etc, or any of that other stuff. But
> what they do need is a "compiler"[1] so they can build the software
> for their target device.
>
> The "compiler" they need has to be tied to the base filesystem. They
> shouldn't be using a "compiler" that isn't aware of what libraries
> (and therefore also be using the correct header files) that are going
> to be available on the target, and they shouldn't be using a compiler
> that isn't aware of the version of the kernel that will be available
> on the target.
>
> In order to help get the Yocto/OE group and the application group in
> sync, Yocto/OE has this neat target which allows the platform team to
> generate an "compiler" (i.e. the SDK) that the application group can
> use which is, through the magic of the Yocto system, perfectly tuned
> for the image the platform team is creating. In other words, the
> application team doesn't need to perform Yocto builds in order to
> write their software, they just need the Yocto people to generate an
> SDK for them and produce a new SDK anytime anything on the target
> image changes. The Yocto people can generate this SDK using a very
> simple one-liner.
>
> For a little more information, please have a look at item 19 of
> https://github.com/twoerner/meta-trevor/blob/master/misc/notes
Okay, so I'm wrong about the SDK being a toolchain that runs on the target.
It does indeed run on the host, right? So why is the toolchain that builds
the target application on the host different from the toolchain that builds
the target OS image on the host?
--
Ciao, Paul D. DeRocco
Paul mailto:pderocco@ix.netcom.com
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 21:58 ` Paul D. DeRocco
@ 2013-06-12 22:10 ` Paul D. DeRocco
2013-06-12 22:26 ` Zhang, Jessica
0 siblings, 1 reply; 20+ messages in thread
From: Paul D. DeRocco @ 2013-06-12 22:10 UTC (permalink / raw)
To: 'Trevor Woerner'; +Cc: yocto
Or, looking at your notes, is it that "bitbake -c populate_sdk <image>"
takes the toolchain that was used to build the image, and packages it up as
an SDK for the benefit of application developers (the normal case), while
"bitbake meta-toolchain" builds a new SDK that may be different in some
ways, including maybe running on a third intermediate machine (the special
case)?
--
Ciao, Paul D. DeRocco
Paul mailto:pderocco@ix.netcom.com
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 22:10 ` Paul D. DeRocco
@ 2013-06-12 22:26 ` Zhang, Jessica
0 siblings, 0 replies; 20+ messages in thread
From: Zhang, Jessica @ 2013-06-12 22:26 UTC (permalink / raw)
To: Paul D. DeRocco, 'Trevor Woerner'; +Cc: yocto@yoctoproject.org
Hi Paul,
Both of them will generate the cross toolchain which will be used by application developer on their development host for generate binaries for their target embedded devices, this cross toolchain includes the cross compiler, cross linker, etc. But to allow for cross development, the application developer also needs development packages that contains target headers and libraries that they can develop application against. These development packages are included in the sysroot that cross toolchain is compiling and linking against. This sysroot is typically base on the target devices' image rootfs. The first command "bitbae -c populate_sdk <image>" will generate the full SDK that includes toolchain and a target image matching sysroot, while the command bitbake meta_toolchain only generate the cross toolchain and a minimum sysroot that you shouldn't use to develop against. For the latter case, we suggest people to setup their sysroot using a target image rootfs.
Cheers,
Jessica
-----Original Message-----
From: yocto-bounces@yoctoproject.org [mailto:yocto-bounces@yoctoproject.org] On Behalf Of Paul D. DeRocco
Sent: Wednesday, June 12, 2013 3:10 PM
To: 'Trevor Woerner'
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] Need clarification on some terms
Or, looking at your notes, is it that "bitbake -c populate_sdk <image>"
takes the toolchain that was used to build the image, and packages it up as an SDK for the benefit of application developers (the normal case), while "bitbake meta-toolchain" builds a new SDK that may be different in some ways, including maybe running on a third intermediate machine (the special case)?
--
Ciao, Paul D. DeRocco
Paul mailto:pderocco@ix.netcom.com
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-12 19:51 ` Paul D. DeRocco
` (3 preceding siblings ...)
2013-06-12 21:32 ` William Mills
@ 2013-06-13 7:10 ` Khem Raj
2013-06-13 7:54 ` Paul D. DeRocco
4 siblings, 1 reply; 20+ messages in thread
From: Khem Raj @ 2013-06-13 7:10 UTC (permalink / raw)
To: Paul D. DeRocco; +Cc: 'Paul Eggleton', yocto
On Jun 12, 2013, at 12:51 PM, Paul D. DeRocco <pderocco@ix.netcom.com> wrote:
> Okay, so now there are two stages to each cross-compilation, so there's
> gcc-cross-initial producing gcc-cross, and also gcc-crosssdk-initial
> producing gcc-crosssdk. But is the difference between those two pairs that
> the first pair ultimately produces a cross-compiler that runs on the host,
> and the second pair ultimately produces a native compiler that runs on the
> target? From what I can gather about the various references to "SDK", it
> sounds like it's supposed to be a set of native tools that runs on the
> target and produces output for the target. If that's true, then the new
> descriptions are still wrong. Shouldn't gcc-cross be described as a "cross"
> package rather than a "native", and shouldn't gcc-crosssdk be described as a
> "native" binary that runs on the target? Or am I still fundamentally
> misinterpreting these things?
>
> For now, I really just need to know if I'm interested in the SDK, since I
> have no intention of ever running compilations on my target system.
OK here it is. When bootstrapping the cross toolchain there are circular dependencies
like gcc-cross wants to have C library to be staged but you need cross compiler to build
C library therefore building cross toolchains we have to bootstrap it in stages where
the initial recipes are temporary tools that are just means to an end. gcc-cross-initial builds
enough of gcc which can build C library for us and once we have C library then we build the
real cross compiler. We also cheat to make gcc-cross-initial think there are some C library
components available e.g. libc.so which it just needs so that it can configure itself to generate
shared objects.
So there is a toolchain build sequence that is followed.
binutils-cross -> gcc-cross-initial -> kernel-headers -> libc-initial - > libc -> cross gcc
Now the above sequence is base of it all. Then SDK has different variants there are 3
Target/on-device SDK - This will install the dev env in the images such that you will be able to build stuff on the device itself
you would add tools-sdk to IMAGE_FEATURES and it will get added to your images
Cross SDK - like meta-toolchain or -c populate_sdk will generate a relocatable self installer that can be installed outside OE/Yocto build env
and used to develop software. You can install it anywhere and also on different linux systems as long as SDKMACHINE architecture is same
(x86 or x86_64)
Internal toolchain - This is what is used when you are using the OE build system to build images. This toolchain is used on build host and in theory
you can use this toolchain outside OE too as long as you specify right options to compilers but this toolchain is not relocatable and is meant for
the build host only.
OE uses the terms a bit differently
lets say you have thee systems
build host - The machine you are using the build OE and generate SDK
SDKMACHINE - The machine that will run SDK, its a x86/x86_64 machine it may be different than your build host above
target = Your target device
native - is used for programs that run on the build system ( say we want to use same captive perl version on any build host) then we will build perl-native
nativesdk - The same as above but meant for SDK which means it would run on SDKMACHINE host ( built on build host -> will run on SDKMACHINE )
cross - runs on build host but generates code for target ( its loosely like a native package built on build host -> runs on build host -> generates code for target)
crosssdk - cross tool meant to build apps for into SDKMACHINE ( built on build host -> runs on build host -> generates code for SDKMACHINE )
cross-canadian - Cross compilers hosted to run on SDKMACHINE ( we build on the buildhost -> it will run on SDKMACHINE -> generate code for target)
thats why its called cross-candian
Hope that helps
-Khem
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: Need clarification on some terms
2013-06-13 7:10 ` Khem Raj
@ 2013-06-13 7:54 ` Paul D. DeRocco
0 siblings, 0 replies; 20+ messages in thread
From: Paul D. DeRocco @ 2013-06-13 7:54 UTC (permalink / raw)
To: 'Khem Raj'; +Cc: 'Paul Eggleton', yocto
> From: Khem Raj
>
<snip>
>
> Hope that helps
Yes, it does. That's an e-mail that will not be deleted. Thanks.
--
Ciao, Paul D. DeRocco
Paul mailto:pderocco@ix.netcom.com
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2013-06-13 7:54 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-12 4:07 Need clarification on some terms Paul D. DeRocco
2013-06-12 5:58 ` Rifenbark, Scott M
2013-06-12 11:16 ` michael
2013-06-12 11:32 ` Bill Traynor
2013-06-12 11:36 ` Rifenbark, Scott M
2013-06-12 11:59 ` Paul Eggleton
2013-06-12 12:24 ` Rifenbark, Scott M
2013-06-12 12:27 ` Rifenbark, Scott M
2013-06-12 12:31 ` Paul Eggleton
2013-06-12 19:51 ` Paul D. DeRocco
2013-06-12 19:53 ` Rifenbark, Scott M
2013-06-12 20:51 ` Trevor Woerner
2013-06-12 21:04 ` Trevor Woerner
2013-06-12 21:58 ` Paul D. DeRocco
2013-06-12 22:10 ` Paul D. DeRocco
2013-06-12 22:26 ` Zhang, Jessica
2013-06-12 21:32 ` William Mills
2013-06-13 7:10 ` Khem Raj
2013-06-13 7:54 ` Paul D. DeRocco
2013-06-12 12:24 ` Rifenbark, Scott M
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.