All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gavin Hu <gavin.hu@arm.com>
To: dev@dpdk.org
Cc: nd@arm.com, gavin.hu@arm.com
Subject: [PATCH v10 2/6] doc: add a guide doc for cross compiling from x86
Date: Fri, 15 Jun 2018 18:21:39 +0800	[thread overview]
Message-ID: <20180615102143.12778-3-gavin.hu@arm.com> (raw)
In-Reply-To: <20180615102143.12778-1-gavin.hu@arm.com>

From: gavin hu <gavin.hu@arm.com>

This is the guide for cross compiling ARM64 DPDK from X86 hosts.

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
 .../linux_gsg/cross_build_dpdk_for_arm64.rst       | 137 +++++++++++++++++++++
 doc/guides/linux_gsg/index.rst                     |   1 +
 2 files changed, 138 insertions(+)
 create mode 100644 doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst

diff --git a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
new file mode 100644
index 000000000..551f0aef8
--- /dev/null
+++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
@@ -0,0 +1,137 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018 ARM Corporation.
+
+Cross compile DPDK for ARM64
+============================
+This chapter describes how to cross compile DPDK for ARM64 from x86 build hosts.
+
+.. note::
+
+   Whilst it is recommended to natively build DPDK on ARM64 (just
+   like with x86), it is also possible to cross-build DPDK for ARM64. An
+   ARM64 cross compile GNU toolchain is used for this.
+
+Obtain the cross tool chain
+---------------------------
+The latest cross compile tool chain can be downloaded from:
+https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/.
+Following is the step to get the version 7.2.1, latest one at the time of this writing.
+
+.. code-block:: console
+
+   wget https://releases.linaro.org/components/toolchain/binaries/latest/
+   aarch64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz
+
+Unzip and add into the PATH
+---------------------------
+
+.. code-block:: console
+
+   tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz
+   export PATH=$PATH:<cross_install_dir>/gcc-linaro-7.2.1-2017.11-x86_64
+   _aarch64-linux-gnu/bin
+
+.. note::
+
+   For the host requirements and other info, refer to the release note section:
+   https://releases.linaro.org/components/toolchain/binaries/latest/
+
+Getting the prerequisite library
+--------------------------------
+
+NUMA is required by most modern machines, not needed for non-NUMA architectures.
+
+.. note::
+
+   For compiling the NUMA lib, run libtool --version to ensure the libtool version >= 2.2,
+   otherwise the compilation will fail with errors.
+
+.. code-block:: console
+
+   git clone https://github.com/numactl/numactl.git
+   cd numactl
+   git checkout v2.0.11 -b v2.0.11
+   ./autogen.sh
+   autoconf -i
+   ./configure --host=x86_64 CC=aarch64-linux-gnu-gcc prefix=<numa install dir>
+   make install
+
+The numa header files and lib file is generated in the include and lib folder respectively under <numa install dir>.
+
+.. _argment_the_cross_toolcain_with_numa_support:
+
+Augment the cross toolchain with NUMA support
+---------------------------------------------
+
+.. note::
+
+   This way is optional, an alternative is to use extra CFLAGS and LDFLAGS, depicted in :ref:`configure_and_cross_compile_dpdk_build` below.
+
+Copy the NUMA header files to the cross compiler's include directory:
+
+.. code-block:: console
+
+   cp <numa_install_dir>/include/numa*.h <cross_install_dir>/gcc-linaro-7.2.1-2017.11
+   -x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include/
+   cp <numa_install_dir>/lib/libnuma.a <cross_install_dir>/gcc-linaro-7.2.1-2017.11
+   -x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.2.1/
+
+.. _configure_and_cross_compile_dpdk_build:
+
+Configure and cross compile DPDK Build
+--------------------------------------
+To configure a build, choose one of the target configurations, like arm64-dpaa2-linuxapp-gcc and arm64-thunderx-linuxapp-gcc.
+
+.. code-block:: console
+
+   make config T=arm64-armv8a-linuxapp-gcc
+
+To cross-compile, without compiling the kernel modules, use the following command:
+
+.. code-block:: console
+
+   make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n
+
+To cross-compile, including the kernel modules, the kernel source tree needs to be specified by setting
+RTE_KERNELDIR:
+
+.. code-block:: console
+
+   make -j CROSS=aarch64-linux-gnu- RTE_KERNELDIR=<kernel_src_rootdir>
+   CROSS_COMPILE=aarch64-linux-gnu-
+
+To compile for non-NUMA targets, without compiling the kernel modules, use the following command:
+
+.. code-block:: console
+
+   make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n
+   CONFIG_RTE_LIBRTE_VHOST_NUMA=n CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n
+
+.. note::
+
+   1. EXTRA_CFLAGS and EXTRA_LDFLAGS should be added to include the NUMA headers and link the library respectively,
+   if the above step :ref:`argment_the_cross_toolcain_with_numa_support` was skipped therefore the toolchain was not
+   argmented with NUMA support.
+
+   2. "-isystem <numa_install_dir>/include" should be add to EXTRA_CFLAGS, otherwise the numa.h file will get a lot of compiling
+   errors of Werror=cast-qual, Werror=strict-prototypes and Werror=old-style-definition.
+
+   An example is given below:
+
+   .. code-block:: console
+
+      make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n
+      EXTRA_CFLAGS="-isystem <numa_install_dir>/include" EXTRA_LDFLAGS=
+      "-L<numa_install_dir>/lib -lnuma"
+
+Meson Cross Compiling DPDK
+--------------------------
+
+To cross-compile DPDK on a desired target machine we can use the following
+command::
+
+	meson cross-build --cross-file <target_machine_configuration>
+
+For example if the target machine is arm64 we can use the following
+command::
+	meson arm-build --cross-file config/arm/arm64_armv8_linuxapp_gcc
diff --git a/doc/guides/linux_gsg/index.rst b/doc/guides/linux_gsg/index.rst
index 2a7bdfe92..077f93023 100644
--- a/doc/guides/linux_gsg/index.rst
+++ b/doc/guides/linux_gsg/index.rst
@@ -13,6 +13,7 @@ Getting Started Guide for Linux
     intro
     sys_reqs
     build_dpdk
+    cross_build_dpdk_for_arm64
     linux_drivers
     build_sample_apps
     enable_func
-- 
2.11.0

  parent reply	other threads:[~2018-06-15 10:21 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20180614095127.16245-1-git-send-email-gavin.hu@arm.com>
2018-06-15  7:08 ` [PATCH v7 0/7] fix the cross compiling errors Gavin Hu
2018-06-15  7:08   ` [PATCH v7 1/7] mk: fix cross build errors Gavin Hu
2018-06-15  7:08   ` [PATCH v7 2/7] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-15  7:08   ` [PATCH v7 3/7] devtools: fix the Exec format error Gavin Hu
2018-06-15  7:08   ` [PATCH v7 4/7] build: fix the meson build warning Gavin Hu
2018-06-15  7:08   ` [PATCH v7 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
2018-06-15  7:08   ` [PATCH v7 6/7] build: fix the meson cross compile error Gavin Hu
2018-06-15  7:08   ` [PATCH v7 7/7] devtools: expand meson cross compiling coverage Gavin Hu
2018-06-15  8:01   ` [PATCH v8 0/6] Fix the cross compiling errors Gavin Hu
2018-06-15  8:01     ` [PATCH v8 1/6] mk: fix cross build errors Gavin Hu
2018-06-15  8:01     ` [PATCH v8 2/6] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-15  8:01     ` [PATCH v8 3/6] build: fix the meson build warning Gavin Hu
2018-06-15  8:01     ` [PATCH v8 4/6] devtools: fix the missing ninja command error on CentOS Gavin Hu
2018-06-15  8:24       ` Bruce Richardson
2018-06-15  8:01     ` [PATCH v8 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-15  8:01     ` [PATCH v8 6/6] devtools: expand meson cross compiling coverage Gavin Hu
2018-06-15  8:28       ` Bruce Richardson
2018-06-15  9:31         ` Gavin Hu
2018-06-15  9:25     ` [PATCH v9 0/6] Fix the cross compiling errors Gavin Hu
2018-06-15  9:26       ` [PATCH v9 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-15  9:26       ` [PATCH v9 2/6] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-15  9:26       ` [PATCH v9 3/6] build: fix the meson build warning Gavin Hu
2018-06-15  9:26       ` [PATCH v9 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-15  9:59         ` Bruce Richardson
2018-06-15  9:26       ` [PATCH v9 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-15  9:26       ` [PATCH v9 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-15 10:01         ` Bruce Richardson
2018-06-15 10:21       ` [PATCH v10 0/6] Fix the cross compiling errors Gavin Hu
2018-06-15 10:21         ` [PATCH v10 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-15 10:21         ` Gavin Hu [this message]
2018-06-15 10:21         ` [PATCH v10 3/6] build: fix the meson build warning Gavin Hu
2018-06-15 10:21         ` [PATCH v10 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-15 13:27           ` Bruce Richardson
2018-06-15 10:21         ` [PATCH v10 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-15 10:21         ` [PATCH v10 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-15 14:14           ` Bruce Richardson
2018-06-19  1:44             ` Gavin Hu
2018-06-19  1:37         ` [PATCH v11 0/6] Fix the cross compiling errors Gavin Hu
2018-06-19  1:37           ` [PATCH v11 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-19  1:37           ` [PATCH v11 2/6] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-19  1:37           ` [PATCH v11 3/6] build: fix the meson build warning Gavin Hu
2018-06-19  1:37           ` [PATCH v11 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-19 10:12             ` Bruce Richardson
2018-06-19 10:41               ` Gavin Hu
2018-06-19 12:30                 ` Bruce Richardson
2018-06-19 23:58                   ` Gavin Hu
2018-06-19  1:37           ` [PATCH v11 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-19  1:37           ` [PATCH v11 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-19 10:14             ` Bruce Richardson
2018-06-19 10:15             ` Bruce Richardson
2018-06-19 10:36           ` [PATCH v12 0/6] Fix the cross compiling errors Gavin Hu
2018-06-19 10:36             ` [PATCH v12 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-19 10:36             ` [PATCH v12 2/6] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-24 11:43               ` Jerin Jacob
2018-06-19 10:36             ` [PATCH v12 3/6] build: fix the meson build warning Gavin Hu
2018-06-24 11:05               ` Jerin Jacob
2018-06-19 10:36             ` [PATCH v12 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-19 10:36             ` [PATCH v12 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-19 10:36             ` [PATCH v12 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-19 12:31               ` Bruce Richardson
2018-06-25  2:49             ` [PATCH v13 0/6] Fix the cross compiling errors Gavin Hu
2018-06-25  2:49               ` [PATCH v13 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-25 16:10                 ` Ali Alnubani
2018-06-27 21:00                 ` [dpdk-stable] " Thomas Monjalon
2018-06-25  2:49               ` [PATCH v13 2/6] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-27 14:25                 ` Ali Alnubani
2018-06-29 17:30                   ` Gavin Hu
2018-06-25  2:49               ` [PATCH v13 3/6] build: fix the meson build warning Gavin Hu
2018-06-25 16:11                 ` Ali Alnubani
2018-06-25  2:49               ` [PATCH v13 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-27 21:13                 ` [dpdk-stable] " Thomas Monjalon
2018-06-25  2:49               ` [PATCH v13 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-25  2:49               ` [PATCH v13 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-27 21:25                 ` [dpdk-stable] " Thomas Monjalon
2018-06-29 17:29                   ` Gavin Hu
2018-06-29 17:27               ` [PATCH v14 0/6] Fix the cross compiling errors Gavin Hu
2018-06-29 17:27                 ` [PATCH v14 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-29 17:27                 ` [PATCH v14 2/6] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-29 17:27                 ` [PATCH v14 3/6] build: fix the meson build warning Gavin Hu
2018-06-29 17:27                 ` [PATCH v14 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-29 17:27                 ` [PATCH v14 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-29 17:27                 ` [PATCH v14 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-07-11 17:46                   ` [dpdk-stable] " Thomas Monjalon
2018-07-11 19:16                 ` [PATCH v14 0/6] Fix the cross compiling errors Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180615102143.12778-3-gavin.hu@arm.com \
    --to=gavin.hu@arm.com \
    --cc=dev@dpdk.org \
    --cc=nd@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.