Difference between revisions of "Cross compilation"

From Organic Design wiki
(rm from gloss)
 
Line 1: Line 1:
[[Category:Peerix]][[Category:glossary]]
 
 
Put simply, a compiler takes source code as input and produces a binary executable as output. Cross compilation refers to the case where the binary code produced is designed to execute on a different machine architecture than the host system.  
 
Put simply, a compiler takes source code as input and produces a binary executable as output. Cross compilation refers to the case where the binary code produced is designed to execute on a different machine architecture than the host system.  
  
Line 8: Line 7:
 
*The build process can be run as a non-root user on the host unix system, preventing damage to the host system if the toolchain misbehaves
 
*The build process can be run as a non-root user on the host unix system, preventing damage to the host system if the toolchain misbehaves
  
=Host enviroment=
+
== Host enviroment ==
 
*[[Enviroment variables affecting cross toolchains]]
 
*[[Enviroment variables affecting cross toolchains]]
 
*a version of ''gcc'' and ''binutils'' that supports cross compilation is required in the ''host'' enviroment
 
*a version of ''gcc'' and ''binutils'' that supports cross compilation is required in the ''host'' enviroment
Line 14: Line 13:
 
*libraries are required to be present that are compatible with the ''target'' system.
 
*libraries are required to be present that are compatible with the ''target'' system.
  
=See also=
+
== See also ==
 
*[http://buildroot.uclibc.org buildroot]
 
*[http://buildroot.uclibc.org buildroot]
 
*Wikipedia: [[w:Cross-compiling|Cross-compiling]]
 
*Wikipedia: [[w:Cross-compiling|Cross-compiling]]
Line 20: Line 19:
 
*[http://kegel.com/crosstool/crosstool-0.42/buildlogs/ gcc toolchain cross compilation matrix]
 
*[http://kegel.com/crosstool/crosstool-0.42/buildlogs/ gcc toolchain cross compilation matrix]
 
*[[Wikipedia:Eat one's own dog food|Eating one's own dog food]]
 
*[[Wikipedia:Eat one's own dog food|Eating one's own dog food]]
 +
[[Category:Peerix]][[Category:Linux]]

Latest revision as of 09:23, 17 January 2009

Put simply, a compiler takes source code as input and produces a binary executable as output. Cross compilation refers to the case where the binary code produced is designed to execute on a different machine architecture than the host system.

For example: Using a C compiler on a PPC system to produce code to run on an Intel.

A cross-compilation environment (refered to as the toolchain) provides a number of advantages, even when the host and target architectures are the same.

  • Strict control of the version on cc, libc and binutils used
  • The build process can be run as a non-root user on the host unix system, preventing damage to the host system if the toolchain misbehaves

Host enviroment

  • Enviroment variables affecting cross toolchains
  • a version of gcc and binutils that supports cross compilation is required in the host enviroment
  • headers to link against are required
  • libraries are required to be present that are compatible with the target system.

See also