官方文档查看地址:
http://doc.dpdk.org/guides/linux_gsg/build_dpdk.html
PDF下载地址:
https://www.intel.com/content/www/us/en/embedded/technology/packet-processing/dpdk/dpdk-getting-started-guide.html
本篇难度系数:
翻译:☆☆☆☆☆
理解:★★☆☆☆
3.从源代码编译DPDK目标
请注意
这个过程的某些部分也可以使用本文档的快速启动安装脚本部分中描述的安装脚本(http://doc.dpdk.org/guides/linux_gsg/quick_start.html#linux-setup-script)来完成。
3.1安装DPDK并浏览源代码
首先,解压存档文件,并移动到未压缩的DPDK源目录:
tar xJf dpdk-<version>.tar.xz
cd dpdk-<version>
.zip格式用:
unzip dpdk-<version>.zip
DPDK由以下几个目录组成:
- lib: DPDK库源代码
- driver:DPDK轮询模式驱动程序的源代码
- app: DPDK应用程序源代码(自动测试)
- examples:DPDK应用程序示例的源代码
- config、buildtools、mk:与框架相关的makefile、脚本和配置
3.2安装DPDK目标环境
DPDK目标的格式是:
ARCH-MACHINE-EXECENV-TOOLCHAIN
where:
- ARCH 可以是: i686, x86_64, ppc_64, arm64
- MACHINE 可以是: native, power8, armv8a
- EXECENV 可以是: linux, freebsd
- TOOLCHAIN 可以是: gcc, icc
要安装的目标取决于安装在主机上的32位和/或64位包和编译器。可用的目标可以在DPDK/config目录中找到。不应该使用defconfig_前缀。
请注意
配置文件提供了RTE_MACHINE优化级别集。在配置文件中,RTE_MACHINE配置值被设置为native,这意味着编译后的软件针对构建它的平台进行了调优。有关此设置及其可能值的更多信息,请参阅DPDK程序员指南(DPDK Programmers Guide)。
当使用Intel®c++编译器(icc)时,应分别调用以下命令中的一个,以供64位或32位使用。注意,shell脚本更新了$PATH变量,因此不应该在同一个会话中执行。此外,验证编译器的安装目录,因为路径可能不同:
source /opt/intel/bin/iccvars.sh intel64
source /opt/intel/bin/iccvars.sh ia32
要安装和生成目标,请使用顶级DPDK目录中的make install T=<target>
命令。
例如,要使用icc编译64位目标,请运行:
make install T=x86_64-native-linux-icc
要使用gcc编译32位构建,make命令应该是:
make install T=i686-native-linux-gcc
例如,如果在编译之前需要对配置进行更改,可以使用make config T=<target>
命令:
make config T=x86_64-native-linux-gcc
警告
任何要使用的内核模块,例如igb_uio
、kni
,都必须使用与目标上运行的内核相同的内核编译。如果DPDK不是在目标机器上构建的,那么应该使用RTE_KERNELDIR
环境变量将编译指向目标机器上使用的内核版本的副本。
一旦创建了目标环境,用户就可以移动到目标环境目录,并继续进行代码更改和重新编译。用户还可以通过编辑build目录中的.config
文件来修改编译时DPDK配置。(这是从顶级配置目录中生成的defconfig文件的本地副本)。
cd x86_64-native-linux-gcc
vi .config
make
此外,make clean命令可用于删除任何已编译的现有文件,以便随后对代码进行完整、干净的重新构建。
3.3浏览已安装的DPDK环境目标
一旦创建了目标,它就包含所有库,包括poll模式驱动程序和用于DPDK环境的头文件(构建客户应用程序需要这些头文件)。此外,test和testpmd应用程序是在build/app目录下构建的,它可以用于测试。还提供了一个kmod目录,其中包含内核模块,如果需要,可以加载这些模块。