如何编译应用程序以处理几个Glibc版本

时间:2013-01-28 19:02:04

标签: c++ glibc dynamic-linking

如何编译应用程序以适用于所有2.X Glibc版本?现在我在2.7 GLibc版本的机器上编译,但是当我启动应用程序,其中glibc版本是2.5,我有一个错误:

./server: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by ./server)

如何编译适用于所有2.X版本的应用程序?

编译命令:

g++  -o newserver  test.cpp ... -lboost_system -lboost_thread -std=c++0x

谢谢!

2 个答案:

答案 0 :(得分:2)

最简单的方法是在你将要支持的那些机器中使用最旧的glibc。使用linux机器,您甚至可以进行完整安装并将其传输到计算机上的chroot环境中:这样,就无需降级您的工作区。

我很高兴在其他答案中看到更方便的解决方案(如果它确实更方便:任何涉及GCC重建的东西都不合格,恕我直言。)

答案 1 :(得分:0)

我不是专家,但我发现如果应用程序需要使用glibc 2.5运行,那么它必须将自己局限于2.5中可用的功能,之后什么也没有。换句话说,限制使用2.6或更高版本中引入的功能。这会有帮助吗?

如果确实需要glibc 2.7中的功能,那么请将其作为目标系统的显式要求。您可以放置​​一些代码来检查运行它的系统的glibc版本,如果可用版本低于所需版本,则打印/记录一条综合消息并正常退出。

但是,如果你想扩展你的网络,即计划在各种系统上运行你的应用程序,那么使用较低版本(如第1段所示)可能会变得更有成效。< / p>