Ray 编译踩坑记:老版本在老系统上的编译之路

Ray 编译踩坑记:老版本在老系统上的编译之路

💡 原文中文,约44200字,阅读约需106分钟。
📝

内容提要

本文记录了在 macOS 和 CentOS 8 上编译 Ray 2.40.0 的过程,解决了缺失 pip 模块、zlib 兼容性和 GCC 版本过低等问题。通过 git bisect 定位并修复问题,最终成功编译,并将解决方案分享给社区,帮助其他开发者。

🎯

关键要点

  • 本文记录了在 macOS 和 CentOS 8 上编译 Ray 2.40.0 的过程。

  • 编译过程中解决了缺失 pip 模块、zlib 兼容性和 GCC 版本过低等问题。

  • 在 MacBook 上编译 Ray 时,首先配置开发环境并安装必要的依赖。

  • 编译 2.52.1 版本成功后,尝试编译 2.40.0 版本时遇到 pip 模块缺失的问题。

  • 通过检查代码发现 Ray 使用子进程安装 pip 包,导致环境变量不完整。

  • 使用 git bisect 定位到导致编译成功的关键 commit,并修复了 pip 依赖问题。

  • 在 CentOS 8 上编译 Ray 时,面临环境配置的挑战,推荐使用 Docker 确保环境一致性。

  • 解决了 GCC 版本过低、GLIBC Fortify 冲突和 .bazelrc 强制启用 -Werror 的问题。

  • 最终成功编译 Ray 2.40.0,并将解决方案分享给社区,帮助其他开发者。

🔎

延伸解读

编译环境的重要性

在编译 Ray 2.40.0 的过程中,环境配置的正确性至关重要。尤其是在老旧系统上,确保依赖库和编译工具的版本兼容性,可以有效避免许多潜在的编译错误。使用 Docker 等工具来创建一致的开发环境,能够大大降低因环境差异导致的问题。

使用 git bisect 的优势

通过 git bisect 定位编译问题的关键提交,可以高效地缩小排查范围,节省时间。相比于逐个检查每个提交,二分查找的方式能够在较短时间内找到引入问题的版本,尤其适合处理大规模代码库中的问题。

常见编译错误及解决方案

在编译过程中,常见的错误包括依赖缺失、GCC 版本不兼容和编译选项冲突等。针对这些问题,开发者应提前了解所需的依赖版本,并根据官方文档进行配置。此外,适时调整编译选项,如禁用某些警告升级为错误,可以有效避免编译失败。

延伸问答

在 macOS 上编译 Ray 2.40.0 时遇到了哪些主要问题?

主要问题包括缺失 pip 模块、zlib 兼容性和 GCC 版本过低等。

如何在 macOS 上解决 Ray 编译时的 pip 模块缺失问题?

通过检查代码发现 Ray 使用子进程安装 pip 包,导致环境变量不完整,需手动执行 pip 安装命令。

在 CentOS 8 上编译 Ray 时推荐的环境配置方法是什么?

推荐使用 Docker 拉取 CentOS 8 镜像,以确保编译环境与生产环境一致性。

如何使用 git bisect 定位 Ray 编译中的问题?

通过 git bisect 二分查找,可以高效定位到导致编译成功的关键 commit,从而解决问题。

在编译 Ray 时,如何解决 GCC 版本过低的问题?

将 GCC 升级到 11.2.1 版本,以支持 C++17 特性,解决编译中的歧义错误。

编译 Ray 2.40.0 的最终成功步骤是什么?

在解决 pip 依赖和 zlib 兼容性问题后,成功编译 Ray 2.40.0,并将解决方案分享给社区。

🏷️

标签

➡️

继续阅读