假设我在 Linux 发行版 X ver N 上编译了共享库和二进制文件。它可以在同一个发行版 N+1 上工作吗?
确定这一点的一般规则是什么?(例如 gcc/glibc 版本,可能是特定于发行版的,LSB 等)
假设我在 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 file
或)并比较upstream-trackerdpkg -S file
中找到的包的版本(N 和 N+1)。
最后,检查 gcc 的版本是否没有明显变化(从 2.x 到 3.y 或从 3.x 到 4.y)。
此外,如果该工具支持,请尝试针对 N+1 版本的发行版在所有二进制文件上使用Linux Application Checker 。