0

我有一个问题,我正在 Linux 机器上编译我的 C++ 应用程序。然后我将可执行文件移动到其他机器,但我有一个错误:

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

我该如何解决?无需在发生此错误的第二台机器上重新编译(这是我的客户端机器)

编译命令:

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

谢谢!

4

2 回答 2

4

您的应用程序正在使用 glibc-2.7 库,并且应用程序在其他机器上找不到它。它可能有这个库的旧版本。您有以下选择:

  • 在目标主机上升级此库
  • 将您的应用与旧的库版本相关联
  • 使用静态链接
  • 将库与应用程序一起发送

如何静态链接到一个库:

gcc main.c mylibrary.a -o main

请注意,大多数发行版默认不安装静态库。

于 2013-01-27T20:22:41.930 回答
1

有三种选择:

  1. 在给定编译器的原始机器上-static编译,它将在您的二进制文件中包含相关库[并可能给您一两个关于“这可能无法正常工作”的警告]
  2. 在新机器上编译代码。
  3. 在目标机器上安装正确版本的库。

大多数时候我倾向于使用选项 1,但在不同的点上都使用了这三个选项。

于 2013-01-27T20:22:55.510 回答