44. Building Your Own Application

44. Building Your Own Application

44.1. Compiling a Sample Application in the Development Kit Directory

        在编译示例应用程序(例如hello world)时,必须设置以下的环境变量:RTE_SDK和RTE_TARGET。

~/DPDK$ cd examples/helloworld/
~/DPDK/examples/helloworld$ export RTE_SDK=/home/user/DPDK
~/DPDK/examples/helloworld$ export RTE_TARGET=x86_64-native-linuxapp-gcc
~/DPDK/examples/helloworld$ make
    CC main.o
    LD helloworld
    INSTALL-APP helloworld
    INSTALL-MAP helloworld.map
        默认情况下,生成的二进制文件在build文件夹下面:

~/DPDK/examples/helloworld$ ls build/app
helloworld helloworld.map
44.2. Build Your Own Application Outside the Development Kit

        示例应用程序(Hello World)可以被复制到一个新目录,以此作为开发的起点:

ifeq ($(RTE_SDK),)
$(error "Please define RTE_SDK environment variable")
endif

# Default target, can be overriden by command line or environment
RTE_TARGET ?= x86_64-native-linuxapp-gcc

include $(RTE_SDK)/mk/rte.vars.mk

# binary name
APP = helloworld

# all source are stored in SRCS-y
SRCS-y := main.c

CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)

include $(RTE_SDK)/mk/rte.extapp.mk

~$ cp -r DPDK/examples/helloworld my_rte_app
~$ cd my_rte_app/
~/my_rte_app$ export RTE_SDK=/home/user/DPDK
~/my_rte_app$ export RTE_TARGET=x86_64-native-linuxapp-gcc
~/my_rte_app$ make
    CC main.o
    LD helloworld
    INSTALL-APP helloworld
    INSTALL-MAP helloworld.map
44.3. Customizing Makefiles

        Hello World示例应用程序提供的默认makefile是一个很好的起点。它包括:

  • 在开始处,$(RTE_SDK)/mk/rte.vars.mk 
  • 在末尾处,$(RTE_SDK)/mk/rte.extapp.mk 
        用户必须定义几个变量:
  • APP:应用程序的名字。
  • SRCS-y:源文件列表(*.c,*.S)。
44.3.2. Library Makefile
        也可以用同样的方法构建库:
  • 在开始处,$(RTE_SDK)/mk/rte.vars.mk 。
  • 在末尾处,$(RTE_SDK)/mk/rte.extlib.mk 。
        唯一的区别是,变量APP被LIB代替,它包含了库的名称。例如,libfoo.a。
44.3.3. Customize Makefile Actions
        可以定义一些变量来定制Makefile操作。最常见的如下所示。参考 Development Kit Build System Makefile Description
详细章节:
  • VPATH:用于构建系统搜索源的路径列表,默认情况下,RTE_SRCDIR将包含在VPATH中。
  • CFLAGS_my_file.o:用于编译my_file.c的指定标志。
  • CFLAGS:用于编译的C文件的标志。上面的是针对某个文件,这个是所有文件。
  • LDFLAGS:链接相关的标志。
  • CPPFLAGS:C预处理相关标志(仅使用.s文件时设置)。
  • LDLIBS:链接库清单,eg,-L /path/to/libfoo - lfoo。

猜你喜欢

转载自blog.csdn.net/shaoyunzhe/article/details/78873056