假设我在 Linux 发行版 X ver N 上编译了共享库和二进制文件。 它能在同一个版本 N+1 上工作吗?
确定这一点的一般规则是什么? (例如 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 文件
或 dpkg -S 文件
)和比较在 upstream-tracker 中找到的包的版本(N 和 N+1) .
最后,检查gcc的版本是否有明显变化(从2.x到3.y或者从3.x到4.y)。
此外,尝试使用 Linux Application Checker如果该工具支持,则针对分发的 N+1 版本对所有二进制文件进行测试。
关于linux - 同一 Linux 发行版的不同版本之间的二进制和共享库兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15132310/