使用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. Koa 中的错误处理

    不像 express 中在末尾处注册一个声明为 (err, req, res, next) 中间件的方式,koa 刚好相反,在开头进行注册. app.use(async (ctx, next) =&g ...

  2. springboot~添加新模块的方法

    在springboot项目框架里,把一个项目两大模块,主项目main和测试项目test,而我们的测试项目根据功能又可以再分,比如可以有单元测试,集成测试,业务测试等等. 对于一个初学者来说,建立模块的 ...

  3. tcc-transaction 分析

    tcc-transaction是TCC型事务java实现,具体项目地址  点我.本文通过tcc-transaction和Springcloud,分析下tcc-transaction的原理. 要了解一个 ...

  4. Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  5. centos 7下安装mysql-8.0

    本篇文章主要介绍在centos7 环境下安装mysql8.0并设置为开机自启. 安装步骤 1.配置yum源 首先在 https://dev.mysql.com/downloads/repo/yum/  ...

  6. Java开发环境的搭建01——Eclipse篇(Windows)

    搭建环境是换项目组和新入职的开发入项都必须面临的一件事情,搭搭环境,一天就过去了...本着不浪费生命不做重复的无用功,在这里写写环境搭建的基本功,这篇是介绍Java环境搭建,常见的开发IDE无非就两种 ...

  7. 如何搭建基于C#和 Appium 的 Android自动测试环境

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使 ...

  8. Android,View转换bitmap,bitmap转换drawable

    Android View转换Bitmap,Bitmap转换Drawable //测试设置bitmap View view1 = ViewGroup.inflate(context, R.layout. ...

  9. 仿微信未读RecyclerView平滑滚动定位效果

    效果图有红点的地方表示有未读消息,依次双击首页图标定位,然后定位到某个未读在手动下滑一点距离在次点击定位效果 用过 RecyclerView 的人都知道,自带有几个滚动到item下标的方法,但是不靠谱 ...

  10. EOS之hello智能合约解析

    传送门: 柏链项目学院   EOS的智能合约与以太坊区别很大, EOS 的智能合约基于 WebAssembly(WASM) 技术执行用户生成的应用程序和代码.WASM是一项新兴的网络标准,得到了谷歌, ...