可选的共享库
Optional shared libraries
本文关键字:共享 更新时间:2023-10-16
我注意到一个依赖于共享库的应用程序的失败:如果你缺少一些依赖项,即使用户无意使用依赖项的功能,应用程序也会在加载时失败
我希望我的应用程序比这更好。理想情况下,不要分发多达n个不同的软件包,where n = numberofsupportedararchitectures * numberOfSupportedOS * ∏(每个共享库)(备选库的数量)当发现我喜欢但不需要的库不存在时,我会在加载时捕获"加载共享库时出错"异常,然后以一种简单地避免使用未解析的相关链接的方式继续执行。但显然没有例外。如果有些东西丢失了,在main()开始之前,它就会掉下来。
我能得到的最接近于控制加载过程的方法是自己用dloopen, dlsym等来解析所有链接。所以无聊。我希望已经有一个图书馆可以为我做这件事了?
我注意到这在基于源代码的发行版和windows上都不是问题。我本来打算把二进制包放在标签里的,但显然我没有权限创建标签。
似乎是最优雅的解决方案在于改进操作系统的加载器/链接器的行为
您可以查看弱符号。然而,这不是C或c++标准的一部分——因此有点依赖于编译器。但是如果你选择GCC,我想它会为你工作的。
您可以自己包含共享库并通过-rpath $ORIGIN
调整链接器搜索路径。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 在cuda线程之间共享大量常量数据
- 如何从具有移动语义的类对象中生成共享指针
- 在c代码之间共享数据的最佳方式
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 将静态库链接到不带-fPIC的共享库中
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 无法在Ubuntu上将共享库与Eclipse链接
- 从python调用openMP共享库时,未定义opnMP函数
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 为什么我的共享库中存在展开符号
- 使用共享指针的函数调用,其对象应为 const
- 具有两个独占锁组的共享锁
- 共享队列的线程安全
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 多个"常量引用"变量可以共享同一个内存吗?
- 如何访问由共享指针保存的类方法?
- 从矢量或地图中删除共享指针