系统相关
首页 > 系统相关> > c-如何使库与Linux打包良好配合?

c-如何使库与Linux打包良好配合?

作者:互联网

我是一个C库的作者,该库正在多个Linux打包发行版中分发.
该库包括标题和源; Linux软件包将其作为标头共享库(.so)分发.

我正在寻找可以使Linux软件包维护者的生活更轻松的准则.

我感兴趣的事情包括:

> API兼容性(例如更改功能签名).显然,保持次要版本之间的兼容性至关重要.那主要版本的变化呢?
>二进制兼容性(例如,更改外部可见数据结构的大小).在次要发行版之间兼容ABI有多重要?在主要版本中是否存在任何与打破它有关的问题?
>建立版本建议.我当前正在使用CMake-我应该设置的任何特定设置,以最大程度地提高程序包维护人员可以仅使用CMakeLists.txt的机会吗?

如果还有其他我想念的东西,我也很高兴听到.

解决方法:

作为Linux维护者,我可以说您的库的向后二进制(ABI)和源(API)兼容性对我们来说非常重要.

API更改可能会中断依赖于库的发行版中某些应用程序(或其他库)的重建.这可能会破坏分布的大规模重建.

ABI更改可能会中断特定的二进制更新.如果检测到某些危险的更改,我们需要验证更新的库中的ABI更改并重建所有依赖的应用程序.在这种情况下,用户也应该下载该库以及所有相关应用程序的更新包.如果库是向后的API并且ABI稳定,那么我们只能更新库包.

如果您破坏了ABI,则请更改您的库的SONAME(凹凸版本).并且,请不要在micro / patch版本中引入API / ABI更改.

我建议您使用abi-compliance-checker工具来验证您的库是否具有API / ABI向后兼容性.请参阅有关Qt库的工具的示例报告:http://abi-laboratory.pro/tracker/timeline/qt/

您需要使用附加的-g -Og选项编译库的调试版本,并在abi-dumper工具的帮助下转储库的ABI.然后比较两个不同版本的ABI转储,以生成ABI更改报告.

enter image description here

标签:package-management,linux,c-4
来源: https://codeday.me/bug/20191028/1952563.html