我编译了一个共享库(libcurl).最后我发现它生成了"libcurl.so.5".".so"表示共享库.但5号是什么意思?如何在没有5号的情况下生成库?就像"libcurl.so"
最根本的是,它只是一个版本号.如果版本号从5增加到6,那么它应该表明与版本5链接的所有先前程序都与版本6二进制不兼容,因此需要重新编译.例如,如果从版本6 中删除了某个功能,那么显然任何使用它的应用程序都将无法工作,因此应用程序自动切换到较新的库版本显然是不安全的.另一方面,对现有函数的错误修复不需要重新编译或移植应用程序,因此即使认为应用程序是针对"以前的版本编译的,也可以安全地使用.5版本进行动态加载" ,嗯,还是5)".
实际上它有点混乱,因为不同的人以不同的方式使用版本号(通常在他们真的不需要时增加它).
关于何时应更新库版本号,libtool项目有一个更严格,更有用的指南.
最后,您不应该生成没有版本号的库.这是对您的用户未来是否与二进制兼容的承诺.
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |