我遵循版本号为三部分的库的版本方案以及两部分的版本。 example-1.0.0和libexample.so.1.0。
当我在不破坏ABI的情况下进行更改时,版本字符串中的最后一个数字会更新。添加新符号时会更新第二个数字,主要版本号用于不兼容的更改。
即使不破坏与其他程序的兼容性,添加符号时也会更新版本。这意味着程序需要重新编译,因为即使库仍然与旧版本ABI兼容,所以版本也已更改。
添加新符号时,是否应该避免更新版本?
答案 0 :(得分:2)
这意味着需要重新编译程序,因为即使库仍然与旧版本ABI兼容,所以版本也已更改。
这意味着你没有正确地做到这一点。在进行ABI不兼容的更改时,您应仅更改SONAME
。习惯使用example.1
作为SONAME
。 Documentation
P.S。如果您只关心Linux,则可能应该完全停止外部版本控制,而是使用符号版本控制来提供单个libexample.so.1
,为新旧客户端二进制文件提供多个ABI不兼容的符号。