boost::asio 启用 io_uring(Linux 5.10)队列支持

欲启用 boost::asio 对于 io_uring 的支持,这需要以下几个先决条件;

1、boost 1.78 及以上发行版本

Revision History - 1.78.0 (boost.org)

2、Linux kernel 5.10 及以上发行版本

3、在预定义头文件(stdafx.h)、或编译器预定义宏(如:cmake、premake 内预定义)

定义下述两个宏,注意是两个缺一不可,宏定义值设为:1。

BOOST_ASIO_HAS_IO_URING = 1

BOOST_ASIO_DISABLE_EPOLL = 1

CMAKE之中可以写下述语句:

方法一:

 target_compile_definitions(main 
    PRIVATE
        BOOST_ASIO_HAS_IO_URING=1
        BOOST_ASIO_DISABLE_EPOLL=1
 )

方法二:

# ADD_DEFINITIONS(-DBOOST_ASIO_HAS_IO_URING=1)

# ADD_DEFINITIONS(-DBOOST_ASIO_DISABLE_EPOLL=1)

Ubuntu 18.04 LTS上面编译需要修改头文件

/usr/include/linux/version.h

把该文件内容替换成下面这个。

//#define LINUX_VERSION_CODE 266002
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
#define LINUX_VERSION_CODE KERNEL_VERSION(5,10,0)

编译完成之后想要编译epoll版本,在把替换之前得内容还原回去。

编译程序需要添加对于 liburing.a 库得链接,另外 ubuntu 18.04 lts 上面没法安装 liburing,所以需要手动去编译库。

axboe/liburing (github.com)

在 github 上面去下载 release 得包自己编译,目前最新版本是 2.5,内核必须 5.10,否则尝试运行 boost/asio 会出问题,不是链接不上就是崩溃这些问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值