0

所以我们有这个程序,它正在 OpenSuse 13.1 中编译,配置如下:

  • GCC 4.6-15.1.3
  • GLIBC 2.14
  • 加密货币 1.0

但是,它应该与具有以下配置的 OpenSuse 10.3 一起运行:

  • 海湾合作委员会 4.2-24
  • GLIBC 2.6.1-18
  • Libcrypto 0.9.8

到目前为止,我能找到的唯一依赖__isoc99_sscanf项是 GLIBC 2.7 中引入的。我尝试通过编写自己的 sscanf 函数来解决此问题,并通过在源代码中添加以下行来替换它: __asm__(".symver __isoc99_sscanf1, __isoc99_sscanf@@GLIBC_2.7");

现在我留下了 libcrypto 依赖项,当我尝试在旧的 OpenSuse 环境中运行它时,它看起来也在 munmap() (当我 strace 程序时)函数上出现段错误(可能是 GCC 的东西?)

所以基本上,我真的不知道解决这种向后兼容性问题的标准程序是什么。有什么想法吗?

4

1 回答 1

0

通常,您只需在新操作系统上安装较旧的 gcc、glibc 和其他库(因此通常作为 RPM 提供)并确保仅使用这些库进行编译。尝试自己解决所有向后不兼容的问题是一场艰苦的战斗。

为了更彻底,您可以在旧操作系统的 chroot 中构建,甚至可以将其打包到 RPM 中,以便自动检查依赖关系。Open Build Service之类的东西使这变得非常容易。

于 2013-03-28T18:41:09.213 回答