Anaconda Python3.7.7环境安装cx-Freeze出现lto-wrapper错误如何解决
问题根因
你的判断完全正确,报错核心为LTO(链接时优化)版本不兼容:Anaconda源提供的Python 3.7.7使用GCC 7.3.0编译,生成的libpython3.7m.a携带LTO 6.0字节码,而你系统当前GCC 9.4.0预期适配的LTO版本为8.1,二者不兼容导致链接阶段失败。
另外补充一个小问题:你执行的pip安装命令参数有误,指定版本需要用两个等号,正确写法为cx-Freeze==6.6。
可行解决方案
按操作成本从低到高排序:
- 方案1(优先推荐):通过conda安装cx-Freeze
conda源的cx-Freeze包与conda生态的Python编译链完全适配,无需本地编译,直接执行以下命令即可:conda activate py3.7 conda install -c conda-forge cx-freeze=6.6 - 方案2:在conda环境内安装匹配版本的编译链
如果你必须使用pip安装,可以在conda环境内安装和Python编译版本一致的GCC工具链,再执行安装:conda activate py3.7 # 安装GCC 7.3 编译链 conda install -c conda-forge gcc_linux-64=7.3.0 gxx_linux-64=7.3.0 # 临时指定编译工具为conda环境内的GCC export CC=x86_64-conda_cos6-linux-gnu-gcc export CXX=x86_64-conda_cos6-linux-gnu-g++ # 执行pip安装 pip install cx-Freeze==6.6 - 方案3:强制禁用LTO编译
若上述方案均不适用,可在pip安装时添加参数强制跳过LTO校验环节:pip install --global-option=build_ext --global-option="--disable-lto" cx-Freeze==6.6
内容的提问来源于stack exchange,提问作者Flyrobot27
相关产品推荐
相关产品推荐

