- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
libfoo.so.-6ren">
在类 Unix 系统上,动态共享库(.so 文件)有一个 SONAME
.
它可以提取例如:readelf -a libfoo.so.0.3.2 | grep SONAME
-> libfoo.so.0
.
最后一部分也称为 SOVERSION
.
该版本号标记了二进制兼容 (ABI) 的库版本。
因此,当程序链接到库的一个版本时,如果 SOVERSION
,它也可以使用更高版本的库。不会改变。
Libtool有一个 -version-info
决定这种机制的机制 SOVERSION
与 current
, revision
和 age
.
线索是:current
也增加了兼容的变化和 major = current - age
在大多数系统上用于设置 SOVERSION
.
但是,在 BSD(FreeBSD、NetBSD、OpenBSD)上,SOVERSION
设置为 current
,这在几个地方提到,比如
suse-wiki ,
我也在提到的平台上对此进行了测试。
问题是:为什么 libtool 在 BSD 上这样做?
为什么这被认为是“BSD 这样做的方式”?
这意味着 Linux/Darwin/SunOS 的每个兼容更改对于 BSD 都是不兼容的更改,因为 SOVERSION
变化。
最佳答案
据至少一位在 GNU 邮件列表上发帖的开发人员称,这可能被认为是一个错误:
https://lists.gnu.org/archive/html/bug-libtool/2011-05/msg00007.html
那封电子邮件还充满了对各种 BSD 的库版本控制策略的有用引用,这似乎与 libtool 的行为相矛盾
关于shared-libraries - 为什么 libtool 的 "current"在 BSD 上用作 "SOVERSION"而不是 "major"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15215898/
我正在编写一个包含许多可选依赖项的 C++ 程序包。重要的是能够在没有任何这些依赖项的情况下使用该包,然后能够在不重新编译软件的情况下添加依赖项。如果依赖项不可用,我想回退到一些默认行为。 每个可选依
cmake 创建和安装具有正确 soname 版本和相关符号链接(symbolic link)的共享对象的所有必要条件是什么? 我最近升级了我的系统,以前适用于 cmake 2.8 的系统不再适用于
在类 Unix 系统上,动态共享库(.so 文件)有一个 SONAME . 它可以提取例如:readelf -a libfoo.so.0.3.2 | grep SONAME -> libfoo.so.
我是一名优秀的程序员,十分优秀!