如何将共享库转换为单模块静态库?或合并至Wrapper?
关于共享库转静态库或链接入Wrapper的疑问
我已做过相关调研,查看了Stack Overflow上的多篇回答。
我理解共享对象(Shared Object)的创建过程会合并所有源文件并解析内部链接,因此无法拆分已合并的各个部分。但我想知道,为何不能创建仅包含一个模块的静态库?
我清楚这样会失去“按需链接”的能力,哪怕只调用一个函数也会引入整个库,但我可以接受这一点。
我提出此问题的原因是需要为某共享库制作Wrapper,常规方式下需分发两个共享库:原库与Wrapper。但在我的环境中这会带来问题——我在最终程序中动态加载Wrapper,可将其放在任意位置,但原共享库会被独立搜索,通用场景下很难让动态加载器找到它。
若能将原共享库转换为静态库,再将其链接到Wrapper中,就能得到一个“全包含”的Wrapper。
我未找到无需重新编译原库即可实现此目标的方法(近期可能无法重新编译原库)。无论是将原库修改为静态库(可仅为单个模块),还是让Wrapper的链接器“拉入共享对象”,都能解决我的问题。
内容的提问来源于stack exchange,提问作者ZioByte
相关产品推荐
相关产品推荐

