首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++二进制文件动态编译但不是静态编译时的glibc错误

c++二进制文件动态编译但不是静态编译时的glibc错误
EN

Stack Overflow用户
提问于 2020-08-12 16:59:27
回答 1查看 210关注 0票数 0

考虑以下情况:我有一个c++文件。我使用RHEL6机器编译我的代码。但是我希望我的可执行文件/二进制文件也能在RHEL4上运行。现在我经历了以下三个案例-

  1. 如果我用gcc版本4.4.7在RHEL6上编译了一个简单的c++文件,我就不能在RHEL4机器上执行它。错误为

加载共享库时

错误:需要glibc2.5或更高版本的动态链接器

gcc: Reduce libc required version上给出了该问题的解决方案。修复后,我能够在RHEL4上运行二进制文件。

  1. 如果我用静态库编译(在RHEL6上使用相同的gcc版本),就可以在RHEL4机器上执行它。不需要像在案例1中那样使用-Wl,--hash-style=both

如果我在

  1. 上编译了我的项目(而不是单个文件),那么当我在RHEL4平台上运行二进制文件时,会得到以下错误。

/lib64 64/libc.so.6:未找到`GLIBC_2.7版本

我的问题是:

( a)为什么在静态链接库的情况下没有出现错误。

( b)案例1和案例3中产生的错误之间的区别是什么。

EN

回答 1

Stack Overflow用户

发布于 2020-08-12 18:05:51

  1. 未能处理该链接器、默认库和动态链接。3.静态链接将库中的代码复制到您的可执行文件中,无论该可执行文件位于何处,它们的工作都是一致的。动态链接对于在运行时在动态库搜索路径中拥有相同的库和库版本可能有些费心,使代码在运行时不完整。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63381373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档