如何编译应用程序以适用于所有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
谢谢!
答案 0 :(得分:2)
最简单的方法是在你将要支持的那些机器中使用最旧的glibc。使用linux机器,您甚至可以进行完整安装并将其传输到计算机上的chroot
环境中:这样,就无需降级您的工作区。
我很高兴在其他答案中看到更方便的解决方案(如果它确实更方便:任何涉及GCC重建的东西都不合格,恕我直言。)
答案 1 :(得分:0)
我不是专家,但我发现如果应用程序需要使用glibc 2.5运行,那么它必须将自己局限于2.5中可用的功能,之后什么也没有。换句话说,限制使用2.6或更高版本中引入的功能。这会有帮助吗?
如果确实需要glibc 2.7中的功能,那么请将其作为目标系统的显式要求。您可以放置一些代码来检查运行它的系统的glibc版本,如果可用版本低于所需版本,则打印/记录一条综合消息并正常退出。
但是,如果你想扩展你的网络,即计划在各种系统上运行你的应用程序,那么使用较低版本(如第1段所示)可能会变得更有成效。< / p>