共享库.so.5是什么意思?

时间:2013-10-28 12:08:12

标签: gcc compilation

我编译了一个共享库(libcurl)。最后我发现它生成了“libcurl.so.5”。 “.so”表示共享库。但5号是什么意思? 如何在没有5号的情况下生成库?就像“libcurl.so”

一样

1 个答案:

答案 0 :(得分:5)

最根本的是,它只是一个版本号。如果版本号从5增加到6,那么它应该表明与版本5链接的所有先前程序都与版本6二进制不兼容,因此需要重新编译。例如,如果某个函数从版本6 删除,那么显然任何使用它的应用程序都将无法运行,因此应用程序自动切换到较新的库版本显然是不安全的。另一方面,对现有函数的错误修复不需要重新编译或移植应用程序,因此即使认为应用程序是针对“以前的版本编译的,也可以安全地使用.5版本进行动态加载” ,嗯,还是5)“。

在实践中它有点混乱,因为不同的人以不同的方式使用版本号(通常在他们真的不需要时增加它)。

当您更新库版本号时,libtool项目有更多strict, and helpful, guide

最后,不应该生成没有版本号的库。它向用户承诺将来是否与二进制兼容。