最简单的Makefile编译DPDK应用

环境变量

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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值