使用 g++ 的 Glibc 问题

Glibc issue using g++

本文关键字:问题 Glibc g++ 使用      更新时间:2023-10-16

我有一个问题,我正在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 

谢谢!

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

  • 在目标主机上升级此库
  • 将您的应用程序链接到旧库版本
  • 使用静态链接
  • 将库与应用程序一起交付

如何静态链接到一个库:

gcc main.c mylibrary.a -o main

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

有三种选择:

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

我大部分时间都倾向于使用选项 1,但在不同时间点使用了所有三个选项。