centos GLIBC的版本

uqjltbpv  于 2022-11-07  发布在  其他
关注(0)|答案(2)|浏览(250)

我已经在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?

jckbn6z7

jckbn6z71#

GLIBCXX_3.4.21这样的符号是由编译器生成的,用来标记编译所使用的C库的版本(特别是从头文件和模板函数中调用的非内联函数)。这是libstdc库,而不是glibc。
你要找的版本是你的libstdc++ -这是C的一个有趣的问题,模板库经常会改变,所以一个函数可能被声明为unsigned int func(),后来有人决定把它改为size_t func()。在32位机器上没有区别,但在64位机器上它确实有区别,并且使用“错误”的版本将导致返回值大小的问题。
有几种不同的解决方案(这不是一个完整的列表):
1.请确保在两台计算机上使用相同版本的libstdc

1.在目标计算机上编译代码。
1.使用静态libstdc++

mqxuamgl

mqxuamgl2#

这是一个伟大的-我用-static选项在链接和它解决的问题也。

相关问题