CMake 编译运行dpdk项目程序

1 引言

dpdk20.11以及以后使用Pkg-Config维护它依赖库路径、头文件路径、编译选项、链接选项等信息,文件名后缀是.pc,方便第三方开发者便捷地获取相关信息 按官网流程安装完dpdk后发现/usr/loca/lib64中包含pkgconfig文件夹内包含libdpdk.pc

2 基本使用

vim /etc/profile

export PKG_CONFIG_PATH=/usr/loca/lib64/pkgconfig/

source /etc/profile

可以通过Linux的PkgConfig命令获取相关信息,如
pkg-config --libs --cflags libdpdk

3 CMake中如何调用

CMake通过FindPkgConfig模块来使用获取相关信息,比较经典的写法是:

set(ENV{PKG_CONFIG_PATH} /usr/local/lib64/pkgconfig/)
find_package(PkgConfig)
pkg_search_module(LIBDPDK REQUIRED libdpck)

后面就可以通过SEASTARPC_LIBRARIES等方式获取相关编译选项和库名称等。

MESSAGE(STATUS ${LIBDPDK_LIBRARIES})
MESSAGE(STATUS ${LIBDPDK_INCLUDE_DIRS})


###输出如下
-- rte_noderte_graphrte_bpfrte_flow_classifyrte_pipelinerte_tablerte_portrte_fibrte_ipsecrte_vhostrte_stackrte_securityrte_schedrte_reorderrte_ribrte_regexdevrte_rawdevrte_pdumprte_powerrte_memberrte_lpmrte_latencystatsrte_knirte_jobstatsrte_ip_fragrte_gsorte_grorte_eventdevrte_efdrte_distributorrte_cryptodevrte_compressdevrte_cfgfilerte_bitratestatsrte_bbdevrte_aclrte_timerrte_hashrte_metricsrte_cmdlinerte_pcirte_ethdevrte_meterrte_netrte_mbufrte_mempoolrte_rcurte_ringrte_ealrte_telemetryrte_kvargs
-- /usr/local/include

具体有哪些可以使用,可以参看CMake的FindPkgConfig模块使用.

4 后续链接

# 使用以下共享链接
target_compile_options (test_dpdk PRIVATE ${LIBDPDK_CFLAGS} ) 
target_link_libraries (test_dpdk ${LIBDPDK_LDFLAGS} )

# 或使用以下静态链接
target_compile_options (test_dpdk PRIVATE ${LIBDPDK_STATIC_CFLAGS} ) 
target_link_libraries (test_dpdk ${LIBDPDK_STATIC_LDFLAGS} )

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值