gcc.rst 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. Building with GCC
  2. =================
  3. Dependencies
  4. ------------
  5. For building U-Boot you need a GCC compiler for your host platform. If you
  6. are not building on the target platform you further need a GCC cross compiler.
  7. Debian based
  8. ~~~~~~~~~~~~
  9. On Debian based systems the cross compiler packages are named
  10. gcc-<architecture>-linux-gnu.
  11. You could install GCC and the GCC cross compiler for the ARMv8 architecture with
  12. .. code-block:: bash
  13. sudo apt-get install gcc gcc-aarch64-linux-gnu
  14. Depending on the build targets further packages maybe needed
  15. .. code-block:: bash
  16. sudo apt-get install bc bison build-essential coccinelle \
  17. device-tree-compiler dfu-util efitools flex gdisk graphviz imagemagick \
  18. liblz4-tool libguestfs-tools libncurses-dev libpython3-dev libsdl2-dev \
  19. libssl-dev lz4 lzma lzma-alone openssl pkg-config python3 \
  20. python3-coverage python3-pycryptodome python3-pyelftools python3-pytest \
  21. python3-sphinxcontrib.apidoc python3-sphinx-rtd-theme python3-virtualenv \
  22. swig
  23. SUSE based
  24. ~~~~~~~~~~
  25. On suse based systems the cross compiler packages are named
  26. cross-<architecture>-gcc<version>.
  27. You could install GCC and the GCC 10 cross compiler for the ARMv8 architecture
  28. with
  29. .. code-block:: bash
  30. sudo zypper install gcc cross-aarch64-gcc10
  31. Depending on the build targets further packages maybe needed.
  32. .. code-block:: bash
  33. zypper install bc bison flex gcc libopenssl-devel libSDL2-devel make \
  34. ncurses-devel python3-devel python3-pytest swig
  35. Prerequisites
  36. -------------
  37. For some boards you have to build prerequisite files before you can build
  38. U-Boot, e.g. for the some boards you will need to build the ARM Trusted Firmware
  39. beforehand. Please, refer to the board specific documentation
  40. :doc:`../board/index`.
  41. Configuration
  42. -------------
  43. Directory configs/ contains the template configuration files for the maintained
  44. boards following the naming scheme::
  45. <board name>_defconfig
  46. These files have been stripped of default settings. So you cannot use them
  47. directly. Instead their name serves as a make target to generate the actual
  48. configuration file .config. For instance the configuration template for the
  49. Odroid C2 board is called odroid-c2_defconfig. The corresponding .config file
  50. is generated by
  51. .. code-block:: bash
  52. make odroid-c2_defconfig
  53. You can adjust the configuration using
  54. .. code-block:: bash
  55. make menuconfig
  56. Building
  57. --------
  58. When cross compiling you will have to specify the prefix of the cross-compiler.
  59. You can either specify the value of the CROSS_COMPILE variable on the make
  60. command line or export it beforehand.
  61. .. code-block:: bash
  62. CROSS_COMPILE=<compiler-prefix> make
  63. Assuming cross compiling on Debian for ARMv8 this would be
  64. .. code-block:: bash
  65. CROSS_COMPILE=aarch64-linux-gnu- make
  66. Build parameters
  67. ~~~~~~~~~~~~~~~~
  68. A list of available parameters for the make command can be obtained via
  69. .. code-block:: bash
  70. make help
  71. You can speed up compilation by parallelization using the -j parameter, e.g.
  72. .. code-block:: bash
  73. CROSS_COMPILE=aarch64-linux-gnu- make -j$(nproc)
  74. Further important build parameters are
  75. * O=<dir> - generate all output files in directory <dir>, including .config
  76. * V=1 - verbose build
  77. Other build targets
  78. ~~~~~~~~~~~~~~~~~~~
  79. A list of all make targets can be obtained via
  80. .. code-block:: bash
  81. make help
  82. Important ones are
  83. * clean - remove most generated files but keep the configuration
  84. * mrproper - remove all generated files + config + various backup files
  85. Installation
  86. ------------
  87. The process for installing U-Boot on the target device is device specific.
  88. Please, refer to the board specific documentation :doc:`../board/index`.