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 ...
随机推荐
- 4.alembic数据迁移工具
alembic是用来做ORM模型与数据库的迁移与映射.alembic使用方式跟git有点类似,表现在两个方面,第一个,alemibi的所有命令都是以alembic开头: 第二,alembic的迁移文件 ...
- 4.5管道实现机制和模拟构建管道「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 管道实现机制 要了解管道的实现机制,我们必须要深入框架的源码,幸亏微软开源了,我们可以访问GitHub的地址来下载 ...
- spring beans源码解读之--总结篇
spring beans下面有如下源文件包: org.springframework.beans, 包含了操作java bean的接口和类.org.springframework.beans.anno ...
- iOS视频边下载边播放
随着视频行业的发展,很多用户对于观看体验也有了更高的要求,以前的习惯是下载好了在观看,而现在是希望1分钟都不要等,ZUI好一边看着一边下载,等把这个视频看完也下载完了,也就是我们常说的“视频边下载边播 ...
- nginx系列9:HTTP反向代理请求处理流程
HTTP反向代理请求处理流程 如下图:
- flex页面布局练习--知乎
采用flexbox弹性容器 在手机端进行页面布局 样本地址: http://tpl.zhuamimi.cn/%E6%89%8B%E6%9C%BA%E7%AB%AF%E9%A1%B5%E9%9D%A2- ...
- js 3D旋转效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- [笔记]记录原开发工作在base命名空间下扩展的属性与方法
前言 该笔记只是为了记录以前开发使用的方式. 处理命名空间namespace /** * 处理命名空间 * @param {string} 空间名称,可多个 * @return {object} 对象 ...
- WPF:Webbrowser 捕获关闭事件
有点难描述说的是什么.大概就是下面这个图:窗体中嵌套一个Webbrowser,现在网页请求关闭 响应MessageHook事件: this.webBrowser.MessageHook += webB ...
- django logging
LOG_LEVEL = 'DEBUG' LOGGING = { 'version' : 1, 'disable_existing_loggers' : True, 'formatters' : { ' ...