首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用GCC 4.4.6从RHEL5机器编译与RHEL6兼容的共享库?

如何用GCC 4.4.6从RHEL5机器编译与RHEL6兼容的共享库?
EN

Stack Overflow用户
提问于 2014-11-27 15:44:18
回答 1查看 585关注 0票数 1

注意:我是一个刚刚进入C++/Linux世界的C#。

我有一个基于BOOST的跨平台C++代码,需要编译成一个共享库,用于:

  • 视窗
  • RHEL6
  • RHEL5和
  • 索拉里斯

我有Windows和RHEL6机器,并且已经成功地为这些机器构建了。Solaris构建当前并不重要。

根据这一点:Can I use a shared library compiled on Ubuntu on a Redhat Linux machine?

我的RHEL6编译的共享库不会在RHEL5上运行,因为以下命令:

代码语言:javascript
运行
复制
readelf -s /path/to/your/library.so | egrep 'GLIBC_2.([6-9]|10)'

返回GLIBC2.7依赖项:

143: 00000000 0 FUNC全球默认UND eventfd@GLIBC_2.7 (14) 9069: 00000000 FUNC全球默认UND eventfd@@GLIBC_2.7

我想知道是否有一种通过RHEL5机器为RHEL6构建的方法?或者任何其他的建议都行。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-27 15:57:24

您可以将共享库与-Wl,-rpath,'$ORIGIN'链接起来,并在同一个目录中提供所有必需的库。

但是,如果您的库头中有任何使用C++标准库中的任何类型的内容,那么您就是在自找麻烦。库的用户必须使用相同的C++编译器和标准库构建和链接他们的应用程序。

最可移植的选项是提供一个带有can的共享库以及仅使用C++头的包装器,用户可以使用任何C++编译器构建这些包装器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27174363

复制
相关文章

相似问题

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