如何在 gem5 中同时使用 python 2.7 和 3?

How to use both python 2.7 and 3 in gem5?

我有一台机器有两个 gem5-repository 实例:一个我保持最新,另一个使用我无法更新的旧版本。

我使用的是 Ubuntu 16.04,当前的 gem5 版本已弃用 python 2.7。我正在推迟升级我的 OS,并使用了一些解决方法(还原提交 scons: Set the minimum scons version to 3.0,并手动将 EM_RISCV 添加到 src/base/loader/elf_object.cc);然而,最近事情变得一团糟,所以我不得不这样做才能使用 SCons 3 和 python3.

在 Ubuntu 18.04 和 20.04 都试过之后,由于在某些 python class.[= 中使用了 metaclasses,我仍然无法编译。 16=]

不过,真正的问题很明显;尽管我安装了 python3(在 /usr/bin/ 中),但找不到 python3-config:

Info: Using Python config: python2.7-config

如何在同一台机器上同时使用python 2.7和3来编译不同版本的gem5?

如果 SCons 找不到 python3-config,请手动用其位置覆盖 PYTHON_CONFIG,并设置适当的环境。

alias scons2="/usr/bin/env python2.7 $(which scons) PYTHON_CONFIG=$(which python2.7-config)"
alias scons3="/usr/bin/env python3 $(which scons) PYTHON_CONFIG=$(which python3-config)"

然后,编译更新的存储库:

scons3 -j5 ./build/ARM/gem5.opt

编译需要的python 2.7:

scons2 -j5 ./build/ARM/gem5.opt