【问题标题】:Using symbol links with dlopen()通过 dlopen() 使用符号链接
【发布时间】:2018-02-26 23:04:29
【问题描述】:

我正在开发一个面向对象的 C++ 项目:

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

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

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

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

【问题讨论】:

    标签: c++ plugins shared-libraries


    【解决方案1】:

    问题似乎与共享库的文件名有关。如果我在调用dlopen() 之前调用readlink(),则libthing.so 将解析为libthing.so.1。在此调用之后,同时打开多个版本的库按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多