42. Development Kit Root Makefile Help
DPDK提供了一个root级别的Makefile,其目标是配置、构建、清理、测试、安装和其他。下面几节将解释这些目标。
42.1. Configuration Targets
配置目标需要目标的名称,它是用“T = 目标名字”指定的,而且是强制性的。可用目标的列表为$(RTE_SDK)/ config(移除defconfig _prefix)。
配置目标还支持使用O = mybuilddir指定输出目录的名称。这是一个可选参数,默认的输出目录是build。
- Config
这将创建一个构建目录,并从模板生成一个配置。在新建的构建目录中也创建了一个Makefile。
示例:
make config O=mybuild T=x86_64-native-linuxapp-gcc
42.2. Build Targets
构建目标支持使用可选选项O = mybuilddir来指定输出目录的名称。默认的输出目录是build。
- all, build or just make
在先前通过make config命令生成的输出目录里创建DPDK。
示例:
make O=mybuild
- clean
清除所有通过make创建的目标文件。
示例:
make clean O=mybuild
- %_sub
仅构建子目录,而不需要管理其他目录的依赖项。
示例:
make lib/librte_eal_sub O=mybuild
- %_clean
只清除子目录。
示例:
make lib/librte_eal_clean O=mybuild
42.3. Install Targets
- install
可用目标的列表在$(RTE_SDK)/ config中(移除defconfig _prefix)。
可以使用GNU标准变量: http://gnu.org/prep/standards/html_node/Directory-Variables.html 和 http://gnu.org/prep/standards/html_node/DESTDIR.html
示例:
make install DESTDIR=myinstall prefix=/usr
42.4. Test Targets
- test
启动使用O = mybuilddir指定的构建目录的自动测试。它是可选的,默认的输出目录是build。
示例:
make test O=mybuild
42.5. Documentation Targets
- doc
生成的文档(API和操作指南)。
- doc-api-html
生成的html格式的Doxygen API文档。 - doc-guides-html
生成的html格式的操作指南文档。 - doc-guides-pdf
生成的pdf格式的操作指南文档。
42.6. Misc Targets
- help
提供速查
42.7. Other Useful Command-line Variables
以下变量可以在命令行中指定:
- V=
使能详细构建(显示完整的编译命令行和一些中间命令)。
- D=
使能调试依赖。提供了一些关于为什么要构建或不构建目标的有用信息。
- EXTRA_CFLAGS=, EXTRA_LDFLAGS=, EXTRA_LDLIBS=, EXTRA_ASFLAGS=, EXTRA_CPPFLAGS=
追加特定的编译、链接或asm标志。
- CROSS=
指定将一个交叉工具链头作为所有gcc应用的前缀。只在使用gcc时有效。
42.8. Make in a Build Directory
上面描述的所有目标都是从SDK root $(RTE_SDK)中调用的。可以在构建目录中运行相同的Makefile目标。例如,以下命令:
cd $(RTE_SDK)
make config O=mybuild T=x86_64-native-linuxapp-gcc
make O=mybuild
等价于:
cd $(RTE_SDK)
make config O=mybuild T=x86_64-native-linuxapp-gcc
cd mybuild
# no need to specify O= now
make
42.9. Compiling for Debug
在编译DPDK和示例程序时,为了包含调试信息,应该将编译优化级别设置成0,在编译前设置EXTRA_CFLAGS环境变量:
export EXTRA_CFLAGS='-O0 -g'