使用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. 4.alembic数据迁移工具

    alembic是用来做ORM模型与数据库的迁移与映射.alembic使用方式跟git有点类似,表现在两个方面,第一个,alemibi的所有命令都是以alembic开头: 第二,alembic的迁移文件 ...

  2. javaScript设计模式之面向对象编程(object-oriented programming,OOP)--寄生组合式继承

    组合式继承:将类式继承同构造函数继承组合使用,但是存在一个问题,子类不是父类的实例,而子类的原型式父类的实例,所以才有了寄生组合式继承. 意思就是说,寄生就是寄生式继承,寄生式继承就是依托于原型继承, ...

  3. C# 《编写高质量代码改善建议》整理&笔记 --(五)成员设计

    1.可以字段应该重构为属性 2.谨慎将数组或集合作为属性 数组和集合作为属性存在会引起这样的一个分歧:如果属性是只读的,我们通常会认为他是不可改变的.但是如果将只读属性应用于数组和集合,而元素的内容和 ...

  4. 《前端之路》之四 JavaScript 的闭包、作用域、作用域链

    04:JavaScript 的闭包 一.定义: 常规定义: 闭包的定义: 有权利访问外部函数作用域的函数. 通俗定义: 1.函数内部包含了函数.然后内部函数可以访问外部函数的作用域. 2.内部函数可以 ...

  5. DeviceUuidFactory【获取设备唯一标识码的UUID(加密)】【需要运行时权限的处理的配合】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于An ...

  6. Webpack 4教程 - 第四部分,使用SplitChunksPlugin分离代码

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/06/04/code-splitting-with-s ...

  7. Microsoft.Office.Interop.Excel 报错

    Microsoft.Office.Interop.Excel 报错 引用dll 在以下目录 C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop. ...

  8. 学JAVA第十八天,接口与抽象类进一步加深

    昨天老师讲了建网站,还要交钱买东西的,所以就没写,今天讲了接口与抽象类进一步加深 上完今天的课后,我才知道一个接口可以有多个实现类,一个实现类可以同时接多个接口. 现在就用代码来解释吧!!! 举例用人 ...

  9. dubbo 2.7.0 中缺乏 <dubbo:annotation /> 的解决方案

    一.背景  从 dubbo 2.6.5 升级到 2.7.0,突然发现好多地方不能用了,dubbo:annotation 直接报红,原先的 @Service 和 @Reference 中直接报了过时,源 ...

  10. 详解块级格式化上下文(BFC)

    相信大家和我一样,第一次听到别人说CSS 块级格式化上下文(block formatting context,简称:BFC)的时候一头雾水,为了帮助大家弄清楚块级格式化上下文,我翻阅了W3C的CSS规 ...