C++ 如何使用GCC4.4.6从RHEL6机器编译RHEL5兼容的共享库?

C++ 如何使用GCC4.4.6从RHEL6机器编译RHEL5兼容的共享库?,c++,linux,rhel5,rhel6,C++,Linux,Rhel5,Rhel6,注意:我是一名C#Windows开发人员,刚刚进入C++/Linux世界 我有一个基于Boost的跨平台C++代码,我需要编译为共享库: 窗户 RHEL6 RHEL5和 Solaris 我有Windows和RHEL6机器,并已成功地为这些机器构建。Solaris版本目前并不重要 据此: 我的RHEL6编译共享库不会在RHEL5上运行,因为以下命令: readelf -s /path/to/your/library.so | egrep 'GLIBC_2.([6-9]|10)' 返回GLI

注意:我是一名C#Windows开发人员,刚刚进入C++/Linux世界

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

  • 窗户
  • RHEL6
  • RHEL5和
  • Solaris
我有Windows和RHEL6机器,并已成功地为这些机器构建。Solaris版本目前并不重要

据此:

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

readelf -s /path/to/your/library.so | egrep 'GLIBC_2.([6-9]|10)'
返回GLIBC2.7依赖项:

143:00000000函数全局默认值UNDeventfd@GLIBC_2.7(14)
9069:00000000函数全局默认值UND eventfd@@GLIBC_2.7

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

您可以将共享库链接到
-Wl,-rpath,“$ORIGIN”
,并在同一目录中提供所有必需的库

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

最便携的选项是提供一个共享的库,其中包含C API和C++头包头,用户可以使用任何C++编译器构建。< /P>从命令中得到的答案是:如果输出不是空的,那么库将不在RHEL-5上工作。然后从那里开始构建。快速的谷歌搜索产生了这样一个结果:它似乎就是为了这个目的而设计的。对不起,我指的是安装,而不是引导。@ElliottFrisch是的,这是问这个问题的主要动机。谢谢你的回答。因此,基本上,如果我理解你的意思,你是说,对于一个可持续的解决方案,答案是否定的。@Visar举个例子:我使用了许多CentOS 6.x的机器,其库存gcc是4.4.7。但是,我使用自己的gcc-4.9.2。GCC-4.4.7C++ + ABI与4.9-2不兼容,所以我不能使用4.4.7编译的C++库。