一个比较大的 Target ,依赖了 A 厂商和 B 厂商提供的 2 个模块(主要以 so 形式,称之为 A.so 和 B.so ),依赖关系如下:
Target: ( A.so + B.so + xxx)
现在的问题是,恰巧 A,B 厂商都使用了同样的子模块,假设都使用了 ffmpeg 技术,此时有 2 种场景: 一种走动态库,如下依赖:
A.so: (ffmpeg.v1.so)
B.so: (ffmpeg.v2.so)
问题 1:此时如果两家使用 ffmpeg 的版本不管一致或不一致,能否编译链接成功,最终 Target 是否会有问题?
另一种走静态库,如下依赖:
A.so: (ffmpeg.v1.a)
B.so: (ffmpeg.v2.a)
问题 2:此时不管 ffmpeg 的版本一致或不一致,能否编译链接成功,最终 Target 是否会有问题?
引申问题 3:是否有某种类似沙盒 /命名空间的技术,将不同厂商的 so 限定在各自的命名空间之内,不管他们依赖何种代码模块,都可以成功链接进 Target 。这样子就可以集成任意多个厂商的库,而无需担心冲突的问题。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.