gpt4 book ai didi

c++ - 在 RHEL6 : How to distribute the software? 上用最近的 gcc 编译

转载 作者:太空狗 更新时间:2023-10-29 20:52:36 25 4
gpt4 key购买 nike

我的软件可以在各种操作系统上编译,包括 RHEL7。我有一个构建它以在 RHEL6 上运行的请求。我的问题是我的 C++ 代码很大程度上依赖于 gcc-4.4 中不存在的 C++11 功能,而 gcc-4.4 则随 RHEL6 一起提供。

我看到有一些方法可以让更新的 gcc 版本在 RHEL6 上运行,例如 Developer ToolSet。我毫不怀疑我能够为 RHEL6 构建我的软件。

但是,一旦使用 gcc-6 编译,我必须为我的软件二进制文件提供什么? gcc-6 的 C 库? gcc-6 的 C++ 库?我应该改为将它们静态链接到我的二进制文件吗?

最重要的是,对于 RHEL,我的软件被打包成 .rpm 文件,并安装在标准位置:/usr/bin、/usr/lib ... 我应该在哪里安装这些新的 C 和 C++ 库文件目标系统? (显然不在/usr/lib 中,它们可能会干扰默认的!)

编辑:我的软件是共享对象,我想我可以静态链接 C++ 库吗?但是将使用我的共享对象的程序(我无法控制它)呢?它可以使用另一个版本的 C++ 库吗?链接器不会找到很多重复项吗?看起来我会打开一 jar 蠕虫...

编辑:是否可以将更新的 gcc 编译器与 RHEL6 标准 C++ 库一起使用?

最佳答案

您可以将您的应用程序与标准 C++ 库的适当动态链接版本一起分发。您不必将它放在/usr/lib 中,但您必须以找到正确版本库的方式链接您的应用程序(请参阅链接器的 -rpath 参数)。

最重要的是,您需要确保您的应用程序不使用 glibc 的较新功能(或者与应用程序一起发布适当版本的 glibc)。确保这一点的最简单方法是针对旧版本的 glibc 构建所有内容(应用程序和较新的 gcc)。最简单的方法 是在旧版本的操作系统上构建(但使用新的编译器)。

关于c++ - 在 RHEL6 : How to distribute the software? 上用最近的 gcc 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45730596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com