【发布时间】:2013-02-14 10:53:09
【问题描述】:
假设我在 Linux 发行版 X ver N 上编译了共享库和二进制文件。 它会在 N+1 版的同一个发行版上工作吗?
确定这一点的一般规则是什么? (例如 gcc/glibc 版本,可能是特定于发行版,LSB 等)
【问题讨论】:
标签: linux compatibility
假设我在 Linux 发行版 X ver N 上编译了共享库和二进制文件。 它会在 N+1 版的同一个发行版上工作吗?
确定这一点的一般规则是什么? (例如 gcc/glibc 版本,可能是特定于发行版,LSB 等)
【问题讨论】:
标签: linux compatibility
首先,检查二进制文件和库的外部依赖项:
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)。
此外,如果该工具支持,请尝试在所有二进制文件中针对 N+1 版本的分发使用 Linux Application Checker。
【讨论】: