c++使用cmake创建dpdk项目
使用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项目的更多相关文章
- 用CMake 构建Qt 项目
译:用CMake构建Qt项目作者: Johan Thelin 译者:赖敬文原链接:http://developer.qt.nokia.com/quarterly/view/using_cmake_t ...
- 创建maven项目(cmd 命令)
2016五月 22 原 创建maven项目(cmd 命令) 分类:maven (994) (0) 1.普通方式创建 1)进入cmd窗口执行 mvn archetype:generate 2) 光标停止 ...
- (八)Eclipse创建Maven项目运行mvn命令
1.Eclipse创建Maven项目 使用Eclipse创建一个Maven项目非常的简单,选择菜单项File>New>Other(也可以在项目结构空白处右击鼠标键),在弹出的对话框中选择M ...
- Jenkins创建Maven项目及SSH部署
前面我们已经安装了Jenkins的环境,以及配置好了jdk和maven.下面我们来看如何通过Jenkins将svn的项目进行打包和部署. 创建MAVEN项目 1.点击新建,输入项目名,选择" ...
- 终端指令操作创建Django项目
需求:通过Django创建一个用户表和权限表. 用户表包括:用户名,邮箱,密码,管理权限. 权限表包括:普通用户,管理用户,超级用户. 权限表和用户表有一对多的关系,即用户表中的每条数据对应权限表中的 ...
- VS自定义项目模板:[2]创建VSIX项目模板扩展
VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...
- 用Kotlin开发Android应用(II):创建新项目
这是关于Kotlin的第二篇.各位高手发现问题,请继续“拍砖”. 原文标题:Kotlin for Android(II): Create a new project 原文链接:http://anton ...
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可..http://www.orac ...
- Eclipse+Maven创建webapp项目<一>(转)
还在为jar下载而烦恼吗?还在为jar依赖关系而烦恼吗?还在为jar冲突而烦恼吗?强大的maven项目管理工具来拯救你们呢?自动下载jar,自动下载jar依赖包.你什么都不用做,只需要在中央仓库中co ...
随机推荐
- GC参考手册 —— GC 算法(实现篇)
学习了GC算法的相关概念之后, 我们将介绍在JVM中这些算法的具体实现.首先要记住的是, 大多数JVM都需要使用两种不同的GC算法 —— 一种用来清理年轻代, 另一种用来清理老年代. 我们可以选择JV ...
- Spring学习(二):Spring支持的5种Bean Scope
序言 Scope是定义Spring如何创建bean的实例的.Spring容器最初提供了两种bean的scope类型:singleton和prototype,但发布2.0以后,又引入了另外三种scope ...
- 大数据时代的图表可视化利器——highcharts,D3和百度的echarts
大数据时代的图表可视化利器——highcharts,D3和百度的echarts https://blog.csdn.net/minidrupal/article/details/42153941 ...
- 简述在ADO中使用接口的抽象数据提供程序以及ADO.NET数据提供程序工厂模型
如何在ADO中使用接口的抽象数据提供程序 在cofig中 appSettings下,配置数据连接类型 <appSettings> <!--这个键值映射到枚举值中的某个值--> ...
- HTML学习总结&基础篇
何为坚持?一个“勤”,一个“忍”. 年前给自己定的目标,今年一定要坚持多逛园子,多看一些大佬的帖子,然后自己也尽量能够分享自己学习的收获,让自己进步快些,但是多逛园子是做到了,写博客这个东西,今年好像 ...
- 最新阿里Java技术面试题,看这一文就够了!
金三银四跳槽季即将到来,作为 Java 开发者你开始刷面试题了吗?别急,小编整理了阿里技术面试题,看这一文就够了! 阿里面试题目目录 技术一面(基础面试题目) 技术二面(技术深度.技术原理) 项目实战 ...
- 硬杠后端(后端坑系列)——Django前期工作
Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC的框架模式. MVC MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件 ...
- 【广州.NET社区线下活动】云定未来 - Azure Meetup
第2届 广州.NET线下沙龙 Azure Meetup 4月13日,第2届广州.NET线下沙龙在广州银行大厦7楼中创学院路演大厅成功举办.来自微软MVP.网易的技术专家们带来了干货满满的知识分享,即使 ...
- Ocelot + Consul + Registrator 基于Docker 实现服务发现、服务自动注册
目录 1. Consul集群搭建 1.1 F&Q Consul官方推荐的host网络模式运行 2. Registrator服务注册工具 2.1 F&Q Registrator悬挂服务 ...
- OpenGL Windows 窗口程序环境搭建
OpenGL环境搭建步骤: Downloading OpenGL 根据官网的说法: In all three major desktop platforms (Linux, macOS, and Wi ...