我想在Linux上编译一个动态链接的可执行文件,并且我想定位一个较旧的glibc ABI,以确保它可以在尽可能多的Linux计算机上运行。我知道典型的解决方案是使用chroot或虚拟机,安装旧的工具链,然后让该工具链自然地以较早的glibc ABI为目标,但是我想知道是否有一种方法可以明确地告诉编译器“嘿,我希望您依赖版本GLIBCXX_3.4.11”。
谢谢!
最佳答案
请注意,GLIBCXX
与libstdc++
有关,而不与glibc
有关。
当您将程序链接到GLIBCXX_3.4.11
并使用该版本中已更改的一些符号时,编译器(实际上是链接器)会记录所需的版本,例如libstdc++.so
。
避免这种情况的唯一方法是安排链接到其他版本的libstdc++.so
,这最容易通过chroot
来实现,也可以不使用相应的符号来实现。所以,不能,您不能只说“我想要GLIBCXX_3.4.11”。