3

假设我在 Linux 发行版 X ver N 上编译了共享库和二进制文件。它可以在同一个发行版 N+1 上工作吗?

确定这一点的一般规则是什么?(例如 gcc/glibc 版本,可能是特定于发行版的,LSB 等)

4

1 回答 1

3

首先,检查二进制文件和库的外部依赖项:

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 。

在此处输入图像描述

于 2013-03-04T15:18:15.063 回答