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--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 \ lz4 lzma lzma-alone openssl python3 python3-coverage \ python3-pycryptodome python3-pyelftools python3-pytest \ python3-sphinxcontrib.apidoc python3-sphinx-rtd-theme python3-virtualenv \ swig SUSE based ~~~~~~~~~~ On suse based systems the cross compiler packages are named cross--gcc. 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:: _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= 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= - generate all output files in directory , 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`.