我们一台服务器上原本是用grub下预留内存的方式, 然后把物理地址在板卡上的配置文件中传给L1.
但是在客户的环境上服务器windriver上不是能预留内存的. 所以服务器上需要在testMxx程序中用dpdk的方式分配出内存, 然后, 把物理地址通过sdp虚拟的网口, 用socket 传给L1.
1. 开始的想法是, 把dpdk 编译好后, 把.a 连接进testMxx.
修改makefile 增加: -L xx -lret_eal
编译都成功了, 在ld时, 发现rte_eal 中引用的内核函数是找不到的.
但是helloworld 编译的时候是找的到的. 所以想用helloworld的makefile来改
2. 使用dpdk 自带的helloworld 中的makefile. 增加testMxx的代码后, 发现编译的时候, 很多cpp的文件中的语法是识别不到的. 改makefile的时候, 要注意里边有两个分支, 可以删除了用else中的分支.
关键是要用: include $(RTE_SDK)/mk/rte.vars.mk
就是这个mk 文件中, 把所有dpdk的配置弄好了. 不会找不到dpdk的lib.
现在分析为什么不能识别cpp 文件中语法. 猜测dpdk 用的是gcc 的编译器.
分析:$(RTE_SDK)/mk/rte.vars.mk 后发现里边会:
include $(RTE_SDK)/mk/target/generic/rte.vars.mk
里边会:
#
# toolchain:
#
# - define CC, LD, AR, AS, ...
# - define TOOLCHAIN_CFLAGS variable (overridden by cmdline value)
# - define TOOLCHAIN_LDFLAGS variable (overridden by cmdline value)
# - define