Ubuntu 18.04安装Flow配套Ray RLlib时CMake报错的解决方法
问题背景
在Ubuntu 18.04环境下,已完成SUMO安装,克隆flow-project的Ray仓库后执行python setup.py develop,触发CMake构建错误,提示Unknown argument -O3。
错误日志片段
CMake Error: Unknown argument -O3
CMake Error: Run 'cmake --help' for all supported options.
CMakeFiles/arrow_ep.dir/build.make:91: recipe for target 'external/arrow/src/arrow_ep-stamp/arrow_ep-configure' failed
make[2]: *** [external/arrow/src/arrow_ep-stamp/arrow_ep-configure] Error 1
CMakeFiles/Makefile2:411: recipe for target 'CMakeFiles/arrow_ep.dir/all' failed
make[1]: *** [CMakeFiles/arrow_ep.dir/all] Error 2
Makefile:145: recipe for target 'all' failedmake: *** [all] Error 2
已执行的配置操作
- 系统依赖安装:
sudo apt-get update sudo apt-get install -y cmake pkg-config build-essential autoconf curl libtool unzip flex bison psmisc python sudo apt-get install python3-dev - Python依赖安装:
pip install cython==0.29.0 - 当前环境版本:CMake 3.25.2,setuptools 58.1.0
解决方案
1. 降级CMake版本
该错误源于flow-project的Ray分支构建脚本与高版本CMake的参数兼容性问题,建议降级到Ubuntu 18.04官方源适配的CMake版本:
# 卸载当前高版本CMake sudo apt remove --purge -y cmake sudo apt autoremove -y # 安装官方源的CMake sudo apt update sudo apt install -y cmake
执行cmake --version验证版本,通常会显示3.10.x或3.16.x系列。
2. 修改Arrow依赖的构建参数(不降级CMake方案)
手动调整Ray仓库中Arrow依赖的CMake配置,将直接传递的-O3参数改为标准CMake变量设置:
- 进入Ray仓库的
external/arrow目录 - 找到对应CMake配置文件(如CMakeLists.txt),替换直接传递的
-O3参数为:set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
3. 用虚拟环境隔离依赖
避免系统全局依赖冲突,在虚拟环境中重新执行安装:
# 创建并激活虚拟环境 python3 -m venv ray_env source ray_env/bin/activate # 安装适配版本的依赖 pip install cython==0.29.0 setuptools==56.0.0 # 重新执行安装 cd ~/ray/python/ python setup.py develop
内容的提问来源于stack exchange,提问作者FahimSh87

