使用dlopen()的符号链接

Using symbol links with dlopen()

本文关键字:符号链接 dlopen 使用      更新时间:2023-10-16

我正在研究一个面向对象的C 项目:

  1. 使用大量RAM。
  2. 启动时有大量的磁盘输入/输出。

在正常操作期间,该软件的性能非常好。但是,由于上述两个因素,新版本的发布速度很慢(次要更新需要重新启动该软件(。

正如我所说,这是一个面向对象的系统,物体不断出现和消失。我想做的是从共享库中加载我的对象,这是指向当前版本的符号链接(例如libthing.so -> libthing.so.1(。这样,我可以更改符号链接(例如,libthing.so -> libthing.so.2(,以便使用最新版本的下一个对象是最新版本(有些现有对象是否具有较旧的逻辑,因为它们'最终从系统中清除(。

但是,上述符号链接策略对我不起作用。即使更改符号链接后,也使用相同版本的库。是我想做的吗?

该问题似乎与共享库的文件名有关。如果我在调用dlopen()之前致电readlink(),则将libthing.so解决为libthing.so.1。在此通话之后,拥有多个版本的库开放,同时可以按预期运行。