无法在带有 anaconda 的机器上构建 gem5:“lto1:致命错误:字节码流”

问题描述

当我尝试使用命令 scons build/X86/gem5.opt -j12 构建 gem5 时,我收到一条错误消息说

lto1:致命错误:使用 LTO 6.0 版生成文件“/home/beihai/anaconda3/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.a”中的字节码流而不是预期的 8.1

我觉得可能是gcc版本不对的问题。但我不知道如何修复它。

我的系统是 Kubuntu 20.04

通过运行 gcc -v,我获得了全球 gcc 版本 gcc 9.3.0 版

通过运行 /home/beihai/anaconda/envs/gem5build/bin/x86_64-conda_cos6-linux-gnu-gcc -v,我获得了 anaconda gcc 版本 gcc 版本 7.3.0 (crosstoll-NG 1.23.0.449-a04d0)

请告诉我如何解决这个问题。

解决方法

我遇到了几乎相同的问题,只是我的问题是“LTO 版本 6.0 而不是预期的 6.2”。

我搜索了 LTO 兼容性问题的通用解决方案,并从以下链接中获得了一些灵感:https://github.com/rust-lang/rust/issues/57176 从上面的链接快速获取:“我研究了这与 python 的关系,发现错误只发生在通过 anaconda 安装的 python 时。”

所以我删除了我的整个anaconda软件包,并删除了Gem5中的build目录,并使用额外的“--force-lto”参数重新运行scon命令,现在安装成功。希望它也能解决您的问题。

我使用的命令:“scons --force-lto build/X86/gem5.opt -j6”

我的设置是: 带有内核 4.15.0-134-generic 的 Ubuntu 18 g++ --version = g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0