2014-09-22 110 views
4

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

谢谢!

回答

5

嘿,我希望你能依靠的版本GLIBCXX_3.4.11

注意GLIBCXXlibstdc++,并glibc

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

就可以避免这种情况的唯一方法是通过安排反对不同版本的libstdc++.so链接,并是最容易通过chroot来实现,或者通过不使用相应的符号。所以不,你不能只说“我要GLIBCXX_3.4.11”。

+0

是的,我是混合了C和C++运行时库。感谢您指出了这一点。我只会链接到一个较旧的系统。谢谢! – staticfloat 2014-09-24 19:50:03