环境变量
RTE_SDK 指定dpdk目录
RTE_TARGET指定编译好的DPDK编译的目标目录
LD_LIBRARY_PATH 增加DPDK的库目录
export RTE_SDK=/root/rdma/dpdk-20.05
export RTE_TARGET=build
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RTE_SDK/$RTE_TARGET/lib
Makefile
将目录下所有.c文件编译,链接dpdk库
SRC_PATH = .
SOURCES += $(wildcard $(SRC_PATH)/*.c)
TARGET = hello
CFLAGS += -I$(RTE_SDK)/$(RTE_TARGET)/include/
CFLAGS += -g
LIBS += -L$(RTE_SDK)/$(RTE_TARGET)/lib
LIBS += -ldpdk -lrte_eal -lrte_mempool -lrte_ring
LIBS += -lnuma -ldl -lpthread
OBJS=${SOURCES:.c=.o}
all: $(TARGET)
$(TARGET): ${OBJS}
gcc $(CFLAGS) -o $(TARGET) ${OBJS} $(LIBS)
.SUFFIXES:
.SUFFIXES: .c .o
.c.o:
gcc $(CFLAGS) -o $@ -c $<
clean:
rm -f $(TARGET)
rm -f $(OBJS)
实例
将DPDK example helloword中的main.c拿出来测试
root@ubuntu:~/rdma/hellodpdk# tree
.
├── main.c
└── Makefile
编译运行
root@ubuntu:~/rdma/hellodpdk# make
gcc -I/root/rdma/dpdk-20.05/build/include/ -g -o main.o -c main.c
gcc -I/root/rdma/dpdk-20.05/build/include/ -g -o hello ./main.o -L/root/rdma/dpdk-20.05/build/lib -ldpdk -lrte_eal -lrte_mempool -lrte_ring -lnuma -ldl -lpthread
root@ubuntu:~/rdma/hellodpdk#
root@ubuntu:~/rdma/hellodpdk# ls
hello main.c main.o Makefile
root@ubuntu:~/rdma/hellodpdk#
root@ubuntu:~/rdma/hellodpdk# ./hello
EAL: Detected 8 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: No legacy callbacks, legacy socket not created
hello from core 1
hello from core 2
hello from core 3
hello from core 4
hello from core 5
hello from core 6
hello from core 7
hello from core 0