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