doc: add aarch32 build guidance

Add cross-compiling guidance for 32-bit aarch32 DPDK on aarch64 host.

Signed-off-by: Phil Yang <phil.yang@arm.com>
Acked-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Aaron Conole <aconole@redhat.com>
This commit is contained in:
Phil Yang 2021-07-07 15:25:43 +02:00 committed by Thomas Monjalon
parent e754875c29
commit 80e9ccc2ac

View File

@ -1,15 +1,17 @@
.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2020 ARM Corporation.
Copyright(c) 2021 ARM Corporation.
Cross compiling DPDK for ARM64
==============================
This chapter describes how to cross compile DPDK for ARM64 from x86 build hosts.
Cross compiling DPDK for aarch64 and aarch32
============================================
This chapter describes how to cross compile DPDK for aarch64 on x86 build
machine and compile 32-bit aarch32 DPDK on aarch64 build machine.
.. note::
Whilst it is recommended to natively build DPDK on ARM64 (just
like with x86), it is also possible to cross compile DPDK for ARM64.
An ARM64 cross compiler GNU toolchain or an LLVM/clang toolchain
Whilst it is recommended to natively build DPDK on aarch64 (just
like with x86), it is also possible to cross compile DPDK for aarch64.
An aarch64 cross compiler GNU toolchain or an LLVM/clang toolchain
may be used for cross-compilation.
@ -53,14 +55,18 @@ To install it in Ubuntu::
sudo apt install pkg-config-aarch64-linux-gnu
For aarch32, install ``pkg-config-arm-linux-gnueabihf``::
sudo apt install pkg-config-arm-linux-gnueabihf
GNU toolchain
-------------
.. _obtain_GNU_toolchain:
Obtain the cross toolchain
~~~~~~~~~~~~~~~~~~~~~~~~~~
Get the cross toolchain
~~~~~~~~~~~~~~~~~~~~~~~
The latest GNU cross compiler toolchain can be downloaded from:
https://developer.arm.com/open-source/gnu-toolchain/gnu-a/downloads.
@ -70,21 +76,22 @@ from the page and use it to generate better code.
As of this writing 9.2-2019.12 is the newest,
the following description is an example of this version.
.. code-block:: console
For aarch64::
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
Unzip and add into the PATH
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: console
tar -xvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
export PATH=$PATH:<cross_install_dir>/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
For aarch32::
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz
tar -xvf gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz
export PATH=$PATH:<cross_install_dir>/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin
.. note::
For the host requirements and other info, refer to the release note section: https://releases.linaro.org/components/toolchain/binaries/
For the host requirements and other info, refer to the release note section:
https://releases.linaro.org/components/toolchain/binaries/
.. _augment_the_gnu_toolchain_with_numa_support:
@ -118,6 +125,10 @@ command::
meson aarch64-build-gcc --cross-file config/arm/arm64_armv8_linux_gcc
ninja -C aarch64-build-gcc
If the target machine is aarch32 we can use the following command::
meson aarch32-build --cross-file config/arm/arm32_armv8_linux_gcc
ninja -C aarch32-build
LLVM/Clang toolchain
--------------------