GLIBC的版本

时间:2018-02-11 12:14:09

标签: c++ linux ubuntu centos glibc

我在Ubuntu机器上创建了c ++应用程序。我已将二进制复制到Centos机器。得到错误:

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

我决定在ldd --version命令的帮助下检查我的机器中有哪些版本的glibc:

Ubuntu: 2.23
Centos6.9: 2.12

为什么CentOS有关GLIBCXX_3.4.21的问题,而Ubuntu拥有glibc版本2.23?

1 个答案:

答案 0 :(得分:2)

编译器生成GLIBCXX_3.4.21之类的符号,用于标记编译所使用的C ++库版本(特别是从头文件和模板函数调用的非内联函数)。这是libstdc ++库,而不是glibc。

您正在寻找的版本是您的libstdc ++ - 这是C ++的一个有趣问题,模板库往往会不断变化,因此函数可能被声明为unsigned int func(),并且后来有人决定将其更改为size_t func()。在32位计算机上没有区别,但对于64位计算机而言,它确实有所作为,并且使用了#34;错误的"版本将导致返回值大小的问题。

有一些不同的解决方案(这不是一个完整的清单):

  1. 确保在两台计算机上使用相同版本的libstdc ++。
  2. 编译目标计算机上的代码。
  3. 使用静态libstdc ++