From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: Gavin Hu <gavin.hu@arm.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH 2/2] doc: add a guide doc for cross compiling from x86
Date: Thu, 24 May 2018 16:47:56 +0530 [thread overview]
Message-ID: <20180524111754.GA5098@jerin> (raw)
In-Reply-To: <1527133127-29407-3-git-send-email-gavin.hu@arm.com>
-----Original Message-----
> Date: Wed, 23 May 2018 23:38:47 -0400
> From: Gavin Hu <gavin.hu@arm.com>
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH 2/2] doc: add a guide doc for cross compiling
> from x86
> X-Mailer: git-send-email 2.1.4
>
> 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>
In addition to comments from Marko,
> ---
> doc/cross_compiling_sdk.txt | 58 +++++++++++++++++++++++++++++++++++++++++++++
I think, instead of keeping it as a orphan document, IMO, it should linked with
https://dpdk.org/doc/guides/
I think, it can go a new section or "HowTo Guides" section, So that in future armv7 and/or PowerPC cross
compilation details can be added.
> 1 file changed, 58 insertions(+)
> create mode 100644 doc/cross_compiling_sdk.txt
>
> diff --git a/doc/cross_compiling_sdk.txt b/doc/cross_compiling_sdk.txt
> new file mode 100644
> index 0000000..aa08871
> --- /dev/null
> +++ b/doc/cross_compiling_sdk.txt
> @@ -0,0 +1,58 @@
> +How to cross compile DPDK for ARM64
> +-----------------------------------
> +
> +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, which currently requires
> +the NUMA libraries to be integrated. Following are the steps to follow.
> +
> +1. 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 so far.
> +$ 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
> +
> +2. Unzip and add into the PATH
> +------------------------------
> +$ tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz
> +$ export PATH=$PATH:<install dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin
> +Note: For the host requirements and ohter info, refer to the release note section:
> +https://releases.linaro.org/components/toolchain/binaries/latest/
> +
> +3. Getting the prerequisite library
> +-----------------------------------
> +-- NUMA
> +--Prequisite: make sure the installed libtool version >= 2.2(run libtool --version to check),
> +otherwise the compilation will fail with errors.
> +$ 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
> +$ make
> +
> +4. Install the numa header and lib
> +----------------------------------
> +Copy the header files to the cross compiler's include directory:
> +$ cp numa*.h <install dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include/
> +Copy the numa lib to the cross compiler;s lib directory:
> +$ cp .libs/libnuma.a <install dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.2.1/
Installing numactrl header files and library files to toolchain area
does not looks very correct. IMO, You can use --prefix option in
numactrl to install to separate directory and add the include details through
EXTRA_CFLAGS and EXTRA_LDFLAGS. This will help in meson for pkg-config
related case as well.
> +
> +5. Configuring the DPDK Build
> +-----------------------------
> +To configure a build, follow the build-sdk-quick.txt file to select the target
> +configuration.
> +$ make config T=arm64-armv8a-linuxapp-gcc
IMO, You can mentioned about other armv8 target such as
defconfig_arm64-dpaa2-linuxapp-gcc/defconfig_arm64-thunderx-linuxapp-gcc
for optimized build specific to target.
> +
> +6. Cross Compiling DPDK
> +-----------------------
> +To cross-compile DPDK for ARM64 target machine, without compiling the kernel modules, use the following
> +command:
> +$ make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n
I think, you could mention to set CONFIG_RTE_LIBRTE_VHOST_NUMA=n and
CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n for NON numa systems to avoid
building numactl for single node systems.
> +
> +To cross-compile DPDK for ARM64, including the kernel modules, the kernel source tree is required.
> +Set RTE_KERNEL_SRC_ROOTDIR to the kernel source tree folder and use the following command:
> +$ make -j CROSS=aarch64-linux-gnu- RTE_KERNELDIR=KERNEL_SRC_ROOTDIR CROSS_COMPILE=aarch64-linux-gnu-
You could add meson cross build details too.
export MESON_PARAMS='-Dwerror=true
-Dexamples=bond,bbdev_app,cmdline,distributor,eventdev_pipeline,exception_path,flow_classify,flow_filtering,helloworld,ip_fragmentation,ip_pipeline,ip_reassembly,ipsec-secgw,ipv4_multicast,kni,l2fwd,l2fwd-crypto,l2fwd-jobstats,l2fwd-keepalive,l3fwd,l3fwd-acl,l3fwd-power,l3fwd-vf,link_status_interrupt,load_balancer,packet_ordering,ptpclient,qos_meter,qos_sched,rxtx_callbacks,service_cores,skeleton,tep_termination,timer,vhost,vhost_scsi,vmdq,vmdq_dcb'
meson --default-library=static $MESON_PARAMS --cross-file config/arm/arm64_armv8_linuxapp_gcc arm64-static-build
ninja -C arm64-static-build
> --
> 2.1.4
>
next prev parent reply other threads:[~2018-05-24 11:18 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-24 3:38 [PATCH 0/2] *** gcc cross compile dpdk *** Gavin Hu
2018-05-24 3:38 ` [PATCH 1/2] mk: fix cross build errors Gavin Hu
2018-05-24 13:46 ` [dpdk-stable] " Thomas Monjalon
2018-05-25 7:53 ` Gavin Hu
2018-05-24 3:38 ` [PATCH 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-24 10:45 ` Kovacevic, Marko
2018-05-24 10:47 ` Kovacevic, Marko
2018-05-24 11:17 ` Jerin Jacob [this message]
2018-05-24 13:20 ` Bruce Richardson
2018-05-25 7:00 ` Gavin Hu
2018-05-24 13:54 ` Thomas Monjalon
2018-05-24 17:16 ` Jerin Jacob
2018-05-24 20:31 ` Thomas Monjalon
2018-05-28 6:53 ` [PATCH v2 1/2] mk: fix cross build errors Gavin Hu
2018-05-28 6:53 ` [PATCH v2 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-28 13:25 ` Bruce Richardson
2018-05-29 1:24 ` Gavin Hu
2018-05-28 16:01 ` Kovacevic, Marko
2018-05-28 13:24 ` [PATCH v2 1/2] mk: fix cross build errors Bruce Richardson
2018-05-29 1:22 ` Gavin Hu
2018-05-29 14:45 ` [dpdk-stable] " Thomas Monjalon
2018-05-29 15:00 ` Bruce Richardson
2018-05-29 16:20 ` Gavin Hu
2018-05-29 19:53 ` Thomas Monjalon
2018-05-29 6:51 ` [PATCH v3 " Gavin Hu
2018-05-29 6:51 ` [PATCH v3 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-29 7:21 ` [PATCH v4 0/2] *** cross gcc fix and guide doc *** Gavin Hu
2018-05-29 7:21 ` [PATCH v4 1/2] mk: fix cross build errors Gavin Hu
2018-05-29 7:21 ` [PATCH v4 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-29 8:39 ` Kovacevic, Marko
2018-05-29 10:43 ` [PATCH v5 0/2] *** cross gcc compile fix and add a guide doc *** Gavin Hu
2018-05-29 10:43 ` [PATCH v5 1/2] mk: fix cross build errors Gavin Hu
2018-05-29 15:09 ` [dpdk-stable] " Thomas Monjalon
2018-05-29 10:43 ` [PATCH v5 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-29 13:33 ` Kovacevic, Marko
2018-05-30 19:16 ` Thomas Monjalon
2018-05-30 19:35 ` Jerin Jacob
2018-06-04 6:03 ` Gavin Hu
2018-06-04 12:50 ` Jerin Jacob
2018-06-12 1:27 ` Gavin Hu
2018-06-12 12:06 ` Gavin Hu
2018-06-12 12:11 ` Thomas Monjalon
2018-06-14 9:51 ` [PATCH v6 0/7] *** fix the cross compile errors *** Gavin Hu
2018-06-14 9:51 ` [PATCH v6 1/7] mk: fix cross build errors Gavin Hu
2018-06-14 9:51 ` [PATCH v6 2/7] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-14 9:51 ` [PATCH v6 3/7] devtools: fix the Exec format error Gavin Hu
2018-06-14 10:34 ` Bruce Richardson
2018-06-15 8:07 ` Gavin Hu
2018-06-14 9:51 ` [PATCH v6 4/7] build: fix the meson build warning Gavin Hu
2018-06-14 10:34 ` Bruce Richardson
2018-06-14 9:51 ` [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
2018-06-14 10:40 ` Bruce Richardson
2018-06-15 8:08 ` Gavin Hu
2018-06-14 9:51 ` [PATCH v6 6/7] build: fix the meson cross compile error Gavin Hu
2018-06-14 10:42 ` Bruce Richardson
2018-06-14 9:51 ` [PATCH v6 7/7] devtools: expand meson cross compiling coverage Gavin Hu
2018-06-14 10:45 ` Bruce Richardson
2018-06-15 8:09 ` Gavin Hu
2018-06-15 10:23 ` Gavin Hu
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=20180524111754.GA5098@jerin \
--to=jerin.jacob@caviumnetworks.com \
--cc=dev@dpdk.org \
--cc=gavin.hu@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.