使用g ++的Glibc问题

时间:2013-01-27 20:14:47

标签: c++ linux g++ glibc

我遇到了问题,我正在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 

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

如何静态链接到一个库:

gcc main.c mylibrary.a -o main

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

答案 1 :(得分:1)

有三种选择:

  1. 在原始机器上进行编译,并将-static编译给编译器,该编译器将包含二进制文件中的相关库[可能会给你一两个警告“这可能无法正常工作”]
  2. 在新机器上编译代码。
  3. 在目标计算机上安装正确版本的库。
  4. 我倾向于在大多数时间使用选项1,但在不同的点上使用了所有三个。