似乎glibc 2.14引入了memcpy
(修复bug 12518)的新版本。然后,针对glibc 2.14+编译的程序将包含一个到[email protected]_2.14
的动态链接,这在旧版本的glibc中显然不可用。如何创建向后兼容的动态链接?
但是,glibc 2.14+显然仍然包含旧的[email protected]_2.2.5
符号以实现向后兼容。我希望能够编译一些程序,使其与旧版glibc版本二进制兼容。在glibc 2.14+的系统上,如何编译一个程序,以便它使用这个旧的符号版本?如果程序必须是特定于编译器的,那么我使用GCC(但是如果知道如何在其他编译器上执行它也会很好)。 (在附注中,我必须承认,对于版本化的符号,例如如何生成它们以及如何使用它们,或者它们是否是ELF特定的,或者应该被认为是标准部件,我不得而知。关于这个问题有没有什么好的信息来源?)
这是唯一的方法吗?不必修改源代码就可以改变链接。有没有办法告诉链接器在生成最终可执行文件时选择符号版本,而不是在源代码级别执行? – Dolda2000
感谢您的链接,顺便说一下! – Dolda2000
这是一种手工完成的方式,在符号版本级别,这是我认为你以后的事情。更简单的方法是使用旧的.a/.so/.h文件和编译/链接来保存较旧的软件安装。 – fche