configure.txt 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // -*- mode:doc; -*-
  2. // vim: set syntax=asciidoc:
  3. [[toolchain]]
  4. Cross-compilation toolchain
  5. ---------------------------
  6. A compilation toolchain is the set of tools that allows you to compile
  7. code for your system. It consists of a compiler (in our case, +gcc+),
  8. binary utils like assembler and linker (in our case, +binutils+) and a
  9. C standard library (either
  10. http://www.gnu.org/software/libc/libc.html[GNU Libc],
  11. http://www.uclibc.org/[uClibc] or
  12. http://www.musl-libc.org/[musl]).
  13. The system installed on your development station certainly already has
  14. a compilation toolchain that you can use to compile an application
  15. that runs on your system. If you're using a PC, your compilation
  16. toolchain runs on an x86 processor and generates code for an x86
  17. processor. Under most Linux systems, the compilation toolchain uses
  18. the GNU libc (glibc) as the C standard library. This compilation
  19. toolchain is called the "host compilation toolchain". The machine on
  20. which it is running, and on which you're working, is called the "host
  21. system" footnote:[This terminology differs from what is used by GNU
  22. configure, where the host is the machine on which the application will
  23. run (which is usually the same as target)].
  24. The compilation toolchain is provided by your distribution, and
  25. OpenADK has nothing to do with it (other than using it to build a
  26. cross-compilation toolchain and other tools that are run on the
  27. development host).
  28. As said above, the compilation toolchain that comes with your system
  29. runs on and generates code for the processor in your host system. As
  30. your embedded system has a different processor, you need a
  31. cross-compilation toolchain - a compilation toolchain that runs on
  32. your _host system_ but generates code for your _target system_ (and
  33. target processor). For example, if your host system uses x86 and your
  34. target system uses ARM, the regular compilation toolchain on your host
  35. runs on x86 and generates code for x86, while the cross-compilation
  36. toolchain runs on x86 and generates code for ARM.
  37. OpenADK provides only one solution for the cross-compilation toolchain.
  38. The versions for binutils, gcc, gdb and libc are fixed. It is a combination
  39. of mostly the latest versions, which are known to work in this combination
  40. and are known to produce usable firmware images. You normally do not need to
  41. know the deep details, it is part of OpenADK policy to keep this part
  42. simple for the user.
  43. You can only choose between three C libraries:
  44. http://www.uclibc.org[uClibc], the
  45. http://www.gnu.org/software/libc/libc.html[glibc] and
  46. http://www.musl-libc.org[musl].
  47. There are some minimal configuration options provided in +Toolchain settings+.
  48. You can enable or disable the building of following components and toolchain
  49. options:
  50. * GDB (enabled by default)
  51. * GNU C++ compiler (enabled by default, when disabled
  52. will prevent some packages to show up in the menu selection)
  53. * Stack Smashing Support (SSP) support for GNU C/C++ Compiler (experimental, some packages will fail to build)
  54. * Link Time Optimization (LTO) support for GNU C/C++ Compiler (experimental, some packages will fail to build)