4

我如何编译应用程序以在所有 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

谢谢!

4

2 回答 2

3

最简单的方法是在您要支持的机器中使用最古老的 glibc 进行构建。使用 linux 机器,您甚至可以进行完整安装并将其转移到chroot您机器上的 ed 环境中:这样,您就无需降级您的工作场所。

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

于 2013-01-28T19:07:48.240 回答
0

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

如果你真的需要 glibc 2.7 的特性,那么让它成为目标系统的明确要求。您可以放置​​一些代码来检查它运行的系统的 glibc 版本,如果可用版本低于所需版本,则打印/记录一条综合消息并优雅退出。

然而,如果你想扩大你的网络,即计划在广泛的系统上运行你的应用程序,那么使用较低版本(如第 1 段所述)可能会更有成效。

于 2013-01-28T19:08:45.137 回答