应用程序中是否可以存在同一库(具有相同名称)的两个不同版本?
我有这样的场景:
产品->平台-> mylibs(version-1)
产品-> mylibs(version-2)
即产品直接使用 mylibs (version-2)。产品还使用平台(这也是一个动态库),平台使用我的库(版本1)。
产品和平台使用的库名称相同。只是版本不同,这两个版本不兼容。
有没有一种方法可以在Linux中使用“.so”库,平台可以链接到一个版本,而产品可以链接到具有相同名称的同一库的另一个版本?
I have some scenario like this:
Product-> Platform-> mylibs(version-1)
Product-> mylibs(version-2)
i.e Product uses mylibs (version-2) directly. Product also uses platform (which is also a dynamic lib) and platform uses my libs (version-1).
The names of the libs used by product and platform are same. Only versions are different and both these versions are not compatible.
Is there a way with ".so" libs in linux that Platform can link to one version and product can link to another version of the same libs having the same name?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请注意,默认情况下即使更改库的名称也是不够的,因为符号名称会发生冲突。
您的库应该使用 soname 和版本符号,在这种情况下,它们甚至可以被称为相同的。
Note, even changing the names of the libs won't be enough by default, as symbol names would conflict.
Your libs should use soname and versioned symbols, in which case they can even be called the same.