如何将共享库嵌入到另一个共享库中
How to embed a shared library into another one?
假设我通过创建 libA.so 将C++函数扩展到python,但 libA.so 也依赖于另一个共享库 libB.so。我想以已经包含(嵌入)libB.so 的方式将 libA.so 分发给最终用户,即最终用户不需要获取 libB.so 或将他/她的LD_LIBRARY_PATH设置为指向包含 libB.so 的文件夹(如果此库存在于最终用户的文件系统中)。
所以基本上我想创建一个共享库 libA.so 它不引用任何其他(静态或共享)库。
问题1:有没有办法在linux中做到这一点?
问题2:这可以通过配置基于distutils.core的python安装脚本来完成吗?(可能问题 1 也会提供答案)
谢谢
问题1:有没有办法在linux中做到这一点?
不。一般的UNIX系统(AIX除外),特别是Linux,认为a.out
和libfoo.so
"完全熟食"和"最终"。无法重新链接它们。
我想创建一个共享库 libA.so 它不引用任何其他(静态或共享)库。
为此,您可以将本来链接到libB.so
的对象链接到libA.so
中。
但请注意,如果您的用户想要自己链接到libB.so
,那么您需要格外小心,不要违反一个定义规则。这可以通过将libB
的所有符号隐藏在libA.so
内来实现(说明在这里)。
另请注意,这样做可能会涉及许可问题——如果libB
是在 GPL 下分发的,那么将其链接到 libA
会创建一个衍生作品,该作品也必须在同一许可证下分发。
相关文章:
- 检查 2D 网格的某个元素是否与另一个元素共享对角线、水平线或垂直线
- 如何创建一个共享对象与另一个.所以在Cmake
- 提升线程问题,当一个线程与另一个线程没有相同的副本时如何共享变量?
- 将其转换为共享指针,并将其作为参数传递给另一个C++类
- 我可以有一个与另一个向量共享存储的向量
- 如何通过另一个类将共享指针传递给一个类?
- 如何将所有权从一个共享指针向量转移到另一个向量?
- 呼叫获取后,将共享_ptr分配给另一个
- 构建并使用使用另一个共享库的源文件中的共享库.(Rinside)
- 如何根据目标体系结构将共享库链接到另一个共享库
- 如何读取STD ::队列与另一个线程共享
- 如何知道一个共享库是否取决于另一个共享库
- 如何将共享库嵌入到另一个共享库中
- 共享内存空间可以将数据(非POD)发送到另一个共享内存吗?
- 与另一个类 c++ 共享对象
- 链接到链接到另一个共享库的共享库会在退出时出错
- 将共享库链接到另一个共享库
- 如何在 c++ 中与另一个类共享变量
- 将共享库与 Linux 中的另一个共享库链接
- 使用共享库的后果dlopen另一个具有不同构建类型的共享库