CyberRT源码剖析--02如何学习CyberRT
2.1 cpp前置知识

cpp11 新特性
- 智能指针
- 移动语义:
std::move - 原子变量,CAS操作(无锁同步)
- Lambda表达式 ,
std::functon可调用对象 - 并发与多线程相关:
std::thread, std::mutex, std::lock_guard等 SFINAE特性(模板进阶)”Substitution Failure Is Not An Error”
设计模式
- 工厂模式
- 单例模式
- 观察者模式
编译链接
- Makefile
- g++/gcc 编译
2.2 CyberRT源码文件夹
第一步:从基础库入手,读懂源码并仿写

第二步:编译FastRTPS,跑通FastRTPS
我使用的源码版本为:2.12.0
文档地址:
https://fast-dds.docs.eprosima.com/en/2.14.x/notes/previous_versions/previous_versions.html
编译文档:
https://fast-dds.docs.eprosima.com/en/2.14.x/installation/binaries/binaries_linux.html
编译安装的过程在上面的官网已经说得十分明白,我在这里说几个编译安装过程中可能遇到的BUG
- 编译
FastDDS所需的Cmake版本较高,请先升级Cmake版本 - 在安装
Foonathan memory这个库时,可能会出现如下问题
这里是
cmake找到了Foonathan memory这个库,从而不会去编译源码,导致安装失败,原因在于如果你的主机里安装了ROS2,ROS2里有Foonathan memory相关的cmake文件,而ROS2里的这个库实际上是个空壳子。为了解决这个问题,只需要在编译Foonathan memory时先去把ROS2的环境变量注释了,一般来说是在.bashrc中,把下面的环境变量注释即可,编译完成后再解除注释
- 在编译完成
FastDDS后可以去跑一下example下的demo,官方给出的编译方式似乎有点问题,请按照下面这篇博文去做:主要的原因就在:
cmake .. -DCMAKE_PREFIX_PATH=~/Fast-DDS/install/这里Cmake编译时需要加一个路径参数

2.3 魔改源码
我修改后的源码如下:https://gitee.com/yang_lian/cmw
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TimerのBlog!







![Xhyper剖析[6]--中断虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-6-%E4%B8%AD%E6%96%AD%E8%99%9A%E6%8B%9F%E5%8C%96/17689244713913.png)
![Xhyper剖析[5]--MMIO虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-5-MMIO%E8%99%9A%E6%8B%9F%E5%8C%96/17689243819381.png)
![Xhyper剖析[4]--XhyperCPU虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-4-XhyperCPU%E8%99%9A%E6%8B%9F%E5%8C%96/17689241119091.png)
![Xhyper剖析[3]--Xhyper内存虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-3-Xhyper%E5%86%85%E5%AD%98%E8%99%9A%E6%8B%9F%E5%8C%96/176892388736321.png)
![Xhyper剖析[2]--Xhyper启动](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-2-Xhyper%E5%90%AF%E5%8A%A8/17689237041079.png)