You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker镜像构建报错:执行mkdir与make命令失败求助

解决Docker构建时SUMO源码编译make Error 2问题

问题分析

构建Docker镜像时,编译SUMO 1.18.0源码的make步骤返回Error 2,但日志被截断,无法获取具体失败原因。这类问题通常和编译环境缺失依赖、源码损坏、资源不足或日志输出不全有关。

排查与解决步骤

1. 获取完整编译日志

当前Docker构建日志仅显示最终的make失败信息,看不到具体模块的编译错误。可通过两种方式获取完整日志:

  • 修改构建命令:添加--progress=plain参数,强制输出完整构建过程:
    docker build --no-cache --progress=plain --build-arg USER_ID=012023 --build-arg GROUP_ID=012023 -t traffic-control:latest C:\Users\name\github\rl_traffic_control\traffic_control
    
  • 调整Dockerfile的make命令:暂时使用单线程编译(-j1),避免多线程导致日志被覆盖:
    RUN mkdir sumo-1.18.0/build/cmake-build && cd sumo-1.18.0/build/cmake-build \
        && cmake ../.. && make -j1
    

2. 补全编译依赖

SUMO源码编译需要一系列基础开发工具和库,若使用Debian/Ubuntu系基础镜像,在下载SUMO源码前添加以下命令安装依赖:

RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc g++ cmake \
    libxerces-c-dev libfox-1.6-dev libgdal-dev libproj-dev libgl2ps-dev \
    && rm -rf /var/lib/apt/lists/*

若为CentOS/RHEL系镜像,替换为yum install对应包(如gcc-c++ cmake3 xerces-c-devel fox-devel gdal-devel proj-devel gl2ps-devel)。

3. 确保SUMO源码完整性

管道直接解压curl下载的包可能因网络问题损坏源码,修改下载命令为先保存文件再解压:

RUN curl -L https://sumo.dlr.de/releases/1.18.0/sumo-src-1.18.0.tar.gz -o sumo-src.tar.gz \
    && tar -xzf sumo-src.tar.gz \
    && rm sumo-src.tar.gz

4. 调整编译参数

  • 若容器资源不足导致多线程编译失败,先用make -j1完成编译,确认成功后再尝试多线程(-j$(nproc))。
  • 在cmake时指定编译模式,避免默认模式的潜在问题:
    RUN mkdir sumo-1.18.0/build/cmake-build && cd sumo-1.18.0/build/cmake-build \
        && cmake -DCMAKE_BUILD_TYPE=Release ../.. && make -j1
    

内容的提问来源于stack exchange,提问作者Makye Daniels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:25:53