如何编译安装liburcu?

编译安装

1 基础知识

1.1 RCU的概念

– RCU即英文read-copy-update的简写
– RCU是2002年10月添加到Linux内核的同步机制
– RCU允许对内核进行同时的读取与更新(相对于传统互斥锁机制的改进)
– RCU实现可伸缩的机制
– RCU通过维护对象的多个版本来确保读取的一致性(确保所有预先存在的读取关键部分完成之前不会被释放)
– RCU定义并使用高效且可扩展的机制来发布和读取对象的新版本和推迟收集旧版本

1.2 liburcu的简介

– 基于LGPLv2.1的用户空间RCU库
– 此库数据同步库提供可随内核数量伸缩的读取端访问

2 最佳实践

2.1 准备编译环境

yum -y install gcc gcc-c++ make expat-devel
yum -y install autoconf automake libtool

2.2 编译前的准备

2.2.1 下载软件包

cd ~
wget https://github.com/urcu/userspace-rcu/archive/v0.7.16.tar.gz -O userspace-rcu-0.7.16.tar.gz

如果需要其他版本,请从以下链接下载,
https://github.com/urcu/userspace-rcu/releases

2.2.2 解压软件包

cd ~
tar -xf userspace-rcu-0.7.16.tar.gz

2.3 编译并安装

2.3.1 准备编译环境

cd ~/userspace-rcu-0.7.16/
./bootstrap

2.3.2 预编译安装包

cd ~/userspace-rcu-0.7.16/
./configure

2.3.3 编译并安装

cd ~/userspace-rcu-0.7.16/
make
make install

2.4 注册库文件

2.4.1 确定所有库文件的路径

find /usr/ -name \*liburcu-bp.so\*

可见如下提示,

/usr/lib64/liburcu-bp.so.6
/usr/lib64/liburcu-bp.so.6.0.0
/usr/local/lib/liburcu-bp.so.1.0.0
/usr/local/lib/liburcu-bp.so.1
/usr/local/lib/liburcu-bp.so

2.4.2 确认库文件是否已经注册

ldconfig -v | grep liburcu-bp.so

命令显示如下,

        liburcu-bp.so.6 -> liburcu-bp.so.6.0.0

由以上命令可知“/usr/local/lib/”目录下的lib文件尚未注册

2.4.3 注册该库文件,

echo '/usr/local/lib' > /etc/ld.so.conf.d/userspace-rcu.conf

再次运行命令确定当前已经注册的lib文件版本,

ldconfig -v | grep liburcu-bp.so

命令显示如下,

        liburcu-bp.so.1 -> liburcu-bp.so.1.0.0
        liburcu-bp.so.6 -> liburcu-bp.so.6.0.0

参阅文档
===================

rcu的介绍
————
https://lwn.net/Articles/262464/

rcu库的软件介绍
———-
https://liburcu.org/

软件的下载
————
https://github.com/urcu/userspace-rcu/releases

没有评论

发表回复

PHP
如何编译安装php-fpm的模块?

1 前言 一个问题,一篇文章,一出故事。 笔者最新部署了一个PHP-FPM的环境,本章将整理如何部署 …

PHP
如何基于Oracle Linux 9.x编译安装PHP-FPM 8.x?

1 前言 一个问题,一篇文章,一出故事。 PHP-FPM可以跟Nginx配合使Nginx环境具备运行 …

Tomcat
如何编译安装Tomcat的Native库?

1 基础知识 Tomcat的Native库允许Tomcat使用OpenSSL作为JSSE的替代品来支 …