使用cmake创建dpdk

特别注意的时,链接dpdk库时,一定要使用 -Wl,--whole-archive 和 -Wl,--no-whole-archive 包含所有的静态库,注意,不要链接 libdpdk.a ,否则链接时会出现符号重复定义。

CMakeLists.txt内容如下

cmake_minimum_required(VERSION 3.0)
project(dpdk_hello) set(CMAKE_CXX_STANDARD ) if(CMAKE_COMPILER_IS_GNUCXX)
# add_compile_options(-std=c++)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
message(STATUS "optional:-std=c++11")
endif(CMAKE_COMPILER_IS_GNUCXX) set(RTE_SDK /opt/dpdk-18.11)
set(RTE_TARGET x86_64-native-linuxapp-gcc) set(SOURCE_FILE
main.cpp) set(WERROR_FLAGS
-W
-Wall
# -Wstrict-prototypes
# -Wmissing-prototypes
-Wmissing-declarations
# -Wold-style-definition
-Wpointer-arith
-Wcast-align
# -Wnested-externs
-Wcast-qual
-Wformat-nonliteral
-Wformat-security
-Wundef
-Wwrite-strings
-Wdeprecated) set(CFLAGS
-m64
-pthread
-march=native
-include ${RTE_SDK}/${RTE_TARGET}/include/rte_config.h
-O3
${WERROR_FLAGS}) set(DPDKLIBS
-Wl,--whole-archive
# dpdk
rte_acl
rte_bbdev
rte_bitratestats
rte_bpf
rte_bus_dpaa
rte_bus_fslmc
rte_bus_ifpga
rte_bus_pci
rte_bus_vdev
rte_bus_vmbus
rte_cfgfile
rte_cmdline
rte_common_cpt
rte_common_dpaax
rte_common_octeontx
rte_compressdev
rte_cryptodev
rte_distributor
rte_eal
rte_efd
rte_ethdev
rte_eventdev
rte_flow_classify
rte_gro
rte_gso
rte_hash
rte_ip_frag
rte_jobstats
rte_kni
rte_kvargs
rte_latencystats
rte_lpm
rte_mbuf
rte_member
rte_mempool
rte_mempool_bucket
rte_mempool_dpaa2
rte_mempool_dpaa
rte_mempool_octeontx
rte_mempool_ring
rte_mempool_stack
rte_meter
rte_metrics
rte_net
rte_pci
rte_pdump
rte_pipeline
rte_pmd_af_packet
rte_pmd_ark
rte_pmd_atlantic
rte_pmd_avf
rte_pmd_avp
rte_pmd_axgbe
rte_pmd_bbdev_null
rte_pmd_bnxt
rte_pmd_bond
rte_pmd_caam_jr
rte_pmd_crypto_scheduler
rte_pmd_cxgbe
rte_pmd_dpaa2
rte_pmd_dpaa2_cmdif
rte_pmd_dpaa2_event
rte_pmd_dpaa2_qdma
rte_pmd_dpaa2_sec
rte_pmd_dpaa
rte_pmd_dpaa_event
rte_pmd_dpaa_sec
rte_pmd_dsw_event
rte_pmd_e1000
rte_pmd_ena
rte_pmd_enetc
rte_pmd_enic
rte_pmd_failsafe
rte_pmd_fm10k
rte_pmd_i40e
rte_pmd_ifc
rte_pmd_ifpga_rawdev
rte_pmd_ixgbe
rte_pmd_kni
rte_pmd_lio
rte_pmd_netvsc
rte_pmd_nfp
rte_pmd_null
rte_pmd_null_crypto
rte_pmd_octeontx
rte_pmd_octeontx_crypto
rte_pmd_octeontx_ssovf
rte_pmd_octeontx_zip
rte_pmd_opdl_event
rte_pmd_pcap
rte_pmd_qat
rte_pmd_qede
rte_pmd_ring
rte_pmd_sfc_efx
rte_pmd_skeleton_event
rte_pmd_skeleton_rawdev
rte_pmd_softnic
rte_pmd_sw_event
rte_pmd_tap
rte_pmd_thunderx_nicvf
rte_pmd_vdev_netvsc
rte_pmd_vhost
rte_pmd_virtio
rte_pmd_virtio_crypto
rte_pmd_vmxnet3_uio
rte_port
rte_power
rte_rawdev
rte_reorder
rte_ring
rte_sched
rte_security
rte_table
rte_timer
rte_vhost
-Wl,--no-whole-archive) add_definitions(
-DRTE_MACHINE_CPUFLAG_SSE
-DRTE_MACHINE_CPUFLAG_SSE2
-DRTE_MACHINE_CPUFLAG_SSE3
-DRTE_MACHINE_CPUFLAG_SSSE3
-DRTE_MACHINE_CPUFLAG_SSE4_1
-DRTE_MACHINE_CPUFLAG_SSE4_2
-DRTE_MACHINE_CPUFLAG_AES
-DRTE_MACHINE_CPUFLAG_PCLMULQDQ
-DRTE_MACHINE_CPUFLAG_AVX
-DRTE_MACHINE_CPUFLAG_RDRAND
-DRTE_MACHINE_CPUFLAG_FSGSBASE
-DRTE_MACHINE_CPUFLAG_F16C
-DRTE_MACHINE_CPUFLAG_AVX2
-D_GNU_SOURCE) add_compile_options(${CFLAGS}) include_directories(${RTE_SDK}/${RTE_TARGET}/include) link_directories(${RTE_SDK}/${RTE_TARGET}/lib) link_libraries(
${DPDKLIBS}
pthread
rt
dl
m
numa
pcap) add_executable(dpdk_hello ${SOURCE_FILE})

参考

c++使用cmake创建dpdk项目的更多相关文章

  1. 用CMake 构建Qt 项目

    译:用CMake构建Qt项目作者: Johan Thelin  译者:赖敬文原链接:http://developer.qt.nokia.com/quarterly/view/using_cmake_t ...

  2. 创建maven项目(cmd 命令)

    2016五月 22 原 创建maven项目(cmd 命令) 分类:maven (994) (0) 1.普通方式创建 1)进入cmd窗口执行 mvn archetype:generate 2) 光标停止 ...

  3. (八)Eclipse创建Maven项目运行mvn命令

    1.Eclipse创建Maven项目 使用Eclipse创建一个Maven项目非常的简单,选择菜单项File>New>Other(也可以在项目结构空白处右击鼠标键),在弹出的对话框中选择M ...

  4. Jenkins创建Maven项目及SSH部署

    前面我们已经安装了Jenkins的环境,以及配置好了jdk和maven.下面我们来看如何通过Jenkins将svn的项目进行打包和部署. 创建MAVEN项目 1.点击新建,输入项目名,选择" ...

  5. 终端指令操作创建Django项目

    需求:通过Django创建一个用户表和权限表. 用户表包括:用户名,邮箱,密码,管理权限. 权限表包括:普通用户,管理用户,超级用户. 权限表和用户表有一对多的关系,即用户表中的每条数据对应权限表中的 ...

  6. VS自定义项目模板:[2]创建VSIX项目模板扩展

    VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...

  7. 用Kotlin开发Android应用(II):创建新项目

    这是关于Kotlin的第二篇.各位高手发现问题,请继续“拍砖”. 原文标题:Kotlin for Android(II): Create a new project 原文链接:http://anton ...

  8. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可..http://www.orac ...

  9. Eclipse+Maven创建webapp项目<一>(转)

    还在为jar下载而烦恼吗?还在为jar依赖关系而烦恼吗?还在为jar冲突而烦恼吗?强大的maven项目管理工具来拯救你们呢?自动下载jar,自动下载jar依赖包.你什么都不用做,只需要在中央仓库中co ...

随机推荐

  1. 【Android Studio安装部署系列】三十一、从Android studio3.0.0升级到Android studio3.0.1

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 突然想要升级到较高版本.要跟随潮流嘛,不然就落后了. 下载IDE http://www.wanandroid.com/tools/i ...

  2. 【Android Studio安装部署系列】四十二、Android Studio使用Eclipse中的keystore为App签名

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 从eclipse迁移到AndroidStudio,要用原Eclipse的签名文件,这样才能保证转到AndroidStudio后更新的 ...

  3. [开源]WinForm 控件使用总结

    背景 都2019年了,还在用WinForm吗?哈哈,其实我也没在用,都是很多年前一些项目积累,所以代码写的有些屎,之所以开源出来,希望能给大家有所帮助,喜欢的话给 一个Star以资鼓励~: 具体代码: ...

  4. Python:黑板课爬虫闯关第三关

    第三关开始才算是进入正题了. 输入网址 http://www.heibanke.com/lesson/crawler_ex02/,直接跳转到了 http://www.heibanke.com/acco ...

  5. SpringBoot技术栈搭建个人博客【后台开发】

    前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...

  6. [翻译] GCC 内联汇编 HOWTO

    目录 GCC 内联汇编 HOWTO 原文链接与说明 1. 简介 1.1 版权许可 1.2 反馈校正 1.3 致谢 2. 概览 3. GCC 汇编语法 4. 基本内联 5. 扩展汇编 5.1 汇编程序模 ...

  7. Java基础系列-二进制操作

    原创文章,转载请标注出处:<Java基础系列-二进制操作> 概述 Java源码中涉及到大量的二进制操作,非常的复杂,但非常的快速. Java二进制表示法 首先了解下二进制,二进制是相对十进 ...

  8. 【Zabbix】CentOS6.9系统下部署Zabbix-server 3.0

    目录 安装Zabbix 关闭selinux 删除旧版本MySQL5.1数据库 安装MySQL 5.6数据库 安装PHP 5.6 Zabbix-server的部署安装 1.安装Yum源 2.安装Zabb ...

  9. 记一次按需加载和npm模块发布实践

    按需加载 在使用 lodash 的时候我们可以使用这样的代码 //一 import {omit} from "lodash"; //二 import l from "lo ...

  10. 【带着canvas去流浪(7)】绘制水球图

    目录 一. 任务说明 二. 重点提示 三. 示例代码 四. 文字淹水效果的实现 五. 关于canvas抗锯齿 六. 小结 示例代码托管在:http://www.github.com/dashnowor ...