On Jun 12, 2013, at 12:51 PM, Paul D. DeRocco <pdero...@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


_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to