【问题标题】:Scons failes to find git and compilerScons 找不到 git 和编译器
【发布时间】:2020-04-30 15:52:49
【问题描述】:

我正在使用带有 Ubuntu Focal 的 Linux 的 Windows 子系统。

安装后
sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python-dev python libboost-all-dev
我正在尝试使用 gem5 文件夹中的 scons 构建 gem5
scons build/ARM/gem5.opt -j 4
并得到错误

Warning: Failed to find git repo directory: a bytes-like object is required, not 'str' :
TypeError: argument should be integer or bytes-like object, not 'str' :
   File "/home/user/gem5/Sconstruct", line 355:
       main['GCC'] = CXX_version and CXX_version.find('g++')>= 0

在使用仿生学的旧版 WSL 上,这些步骤可以正常工作。 知道吗,我在这里缺少什么?

【问题讨论】:

    标签: ubuntu windows-subsystem-for-linux scons


    【解决方案1】:

    在 python 3 中,子进程通信将在此处返回一个类似字节的对象:gem5 SConstruct 这是设置 CXX_version 的内容(python 类似字节的文档:PIPEcommunicate

    使用 str 参数调用该类字节对象 find ,但应将其转换为字节以在类字节对象中查找。可能返回通信输出的 readCommand 函数应该是将输出从 bytes-like 转换为 str 的函数。

    这是用什么版本的 python 和 SCons 运行的?我的猜测是使用了 python 3,并且该构建的 SConstruct 与 python 3 不兼容。

    现在可能尝试使用 python2.7。

    一种方法是通过 virtualenv

    # assuming linux
    python2.7 -m pip install virtualenv
    virtualenv /home/user/venv
    /home/user/venv/bin/pip install -U setuptools wheel pip
    /home/user/venv/bin/pip install scons
    cd /home/user/gem5
    /home/user/venv/bin/scons
    

    【讨论】:

    • 对我来说听起来很合理,但 Scons 不应该自动选择 Python 2.7 吗?它已使用 apt 安装,并且似乎已在 Bionics Build 上完成
    • 如果你检查 scons 脚本(*nix: scons 或 windows: where scons)它显示它使用你的系统'python'命令,所以如果你的系统配置了 python3 作为 python 命令然后它使用的那个。这个问题显示了使用 scons 的不同 python 版本的几种解决方案:stackoverflow.com/questions/48185262/…
    • 非常感谢您的解释!
    • Focal 非常努力地去除 python2 位,因此“SCons 是否应该不自动选择 Python 2.7”似乎是 Ubuntu 可能故意选择不做的事情。这只是一个猜测,我没有从发行版 pkg 运行 scons,所以不知道他们是如何设置的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2015-06-27
    • 2019-01-24
    • 2012-01-14
    相关资源
    最近更新 更多