【发布时间】:2012-08-02 07:05:07
【问题描述】:
所以我们有这个程序正在 OpenSuse 13.1 中编译,配置如下:
- GCC 4.6-15.1.3
- GLIBC 2.14
- Libcrypto 1.0
但是,它应该与具有以下配置的 OpenSuse 10.3 一起运行:
- GCC 4.2-24
- GLIBC 2.6.1-18
- Libcrypto 0.9.8
到目前为止,我能找到的唯一依赖项是 GLIBC 2.7 中引入的 __isoc99_sscanf。我尝试通过编写自己的 sscanf 函数来解决此问题,并通过在源代码中添加以下行来替换它:
__asm__(".symver __isoc99_sscanf1, __isoc99_sscanf@@GLIBC_2.7");
现在我留下了 libcrypto 依赖项,当我尝试在旧的 OpenSuse 环境中运行它时,它看起来也在 munmap() (当我跟踪程序时)函数上出现段错误(可能是 GCC 的东西? )
所以基本上,我真的不知道解决这种向后兼容性问题的标准程序是什么。有什么想法吗?
【问题讨论】:
-
为什么不简单地在每个目标上编译一个二进制文件?
-
这是可能的,但我想知道是否有更多的人面临这个问题以及可以采取什么措施来解决这个问题。