gpt4 book ai didi

c++ - 如何加载带有后缀的库

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:41 25 4
gpt4 key购买 nike

我需要使用 dlopen 加载预安装的共享对象。说它有名字 somelib.so

在某些系统上,有几个链接的库:somelib.so、somelib.so.1、somelib.so.321.1

在其他系统上只有没有链接的库:somelib.so.321.1如何正确加载这个库?

我使用名称“somelib.so”执行 dlopen,这仅适用于存在此链接的系统。

如果系统中不存在默认链接('somelib.so'),是否是搜索库全名的唯一选项?

最佳答案

这取决于上下文:旨在通过 dlopen 加载的插件通常没有版本号,例如 /usr/libexec/apache2/mod_something.so

普通共享库通常有以下版本:

libfoo.so.Majorversion.Minoversion
libfoo.so.Majorversion
libfoo so

Minorversion 部分可以更改,恕不另行通知,这意味着兼容 更改。如果 Majorversion 部分发生变化,则它(可能)是一个不兼容 的变化。所以我建议你在 dlopen 中使用第二个版本,例如 libz.so.1 而不是 libz.solibz.so.1.2.11 .

(为了更难,Majorversion和Minorversion都可以结构化,例如Major='1.1' Minor='1.a')

关于c++ - 如何加载带有后缀的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54060316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com