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