我想在Linux上编译一个动态链接的可执行文件,并且我想定位一个较旧的glibc ABI,以确保它可以在尽可能多的Linux计算机上运行。我知道典型的解决方案是使用chroot或虚拟机,安装旧的工具链,然后让该工具链自然地以较早的glibc ABI为目标,但是我想知道是否有一种方法可以明确地告诉编译器“嘿,我希望您依赖版本GLIBCXX_3.4.11”。

谢谢!

最佳答案



请注意,GLIBCXXlibstdc++有关,而不与glibc有关。

当您将程序链接到GLIBCXX_3.4.11并使用该版本中已更改的一些符号时,编译器(实际上是链接器)会记录所需的版本,例如libstdc++.so

避免这种情况的唯一方法是安排链接到其他版本的libstdc++.so,这最容易通过chroot来实现,也可以不使用相应的符号来实现。所以,不能,您不能只说“我想要GLIBCXX_3.4.11”。

08-27 20:39