2
假设我在Linux发行版X上编译了共享库和二进制文件X ver。 它可以在同一发行版N + 1上工作吗?同一个Linux发行版的不同版本之间的二进制和共享库兼容性
什么是一般规则来确定这一点? (如GCC/glibc的版本,也许它的具体分布,LSB等)
假设我在Linux发行版X上编译了共享库和二进制文件X ver。 它可以在同一发行版N + 1上工作吗?同一个Linux发行版的不同版本之间的二进制和共享库兼容性
什么是一般规则来确定这一点? (如GCC/glibc的版本,也许它的具体分布,LSB等)
首先,检查你的二进制文件和库的外部依赖:
ldd yourlib.so a.out ...
样本输出
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f7906ee6000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7906b29000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f790690b000)
而且然后检查N + 1中是否需要的库没有发生重大变化:确定拥有这些库的软件包(rpm -qf file
或dpkg -S file
),并比较upstream-tracker中找到的软件包版本(N和N + 1)。
最后,检查gcc版本是否没有显着改变(从2.x到3.y或从3.x到4.y)。
此外,如果工具支持,则可以尝试在所有的二进制文件上使用Linux Application Checker与N + 1版本的发行版。