与Docker一起建造riot/helloworld

与Docker一起建造riot/helloworld,docker,riot-os,Docker,Riot Os,这是我的设置: docker pull riot/riotbuild wgethttps://github.com/RIOT-OS/RIOT/archive/2019.04.zip 2019.04.zip解压 cd-RIOT-2019.04/examples/hello world/ make BUILD\u IN\u DOCKER=1 BOARD=stm32f4discovery all 所有这些都没问题 make BUILD\u IN\u DOCKER=1 BOARD=stm32f4disc

这是我的设置:

  • docker pull riot/riotbuild
  • wgethttps://github.com/RIOT-OS/RIOT/archive/2019.04.zip
  • 2019.04.zip解压
  • cd-RIOT-2019.04/examples/hello world/
  • make BUILD\u IN\u DOCKER=1 BOARD=stm32f4discovery all

    所有这些都没问题

  • make BUILD\u IN\u DOCKER=1 BOARD=stm32f4discovery flash

    这一步失败了。错误是:


  • 我检查了脚本,实际上它最终会调用docker作为下一个:

    a)在DOCKER=1 BOARD=stm32f4discovery all中进行构建

    docker run --rm -t -u "$(id -u)" \
    -v '/usr/share/zoneinfo/PRC:/etc/localtime:ro' -v '/home/shubuntu1/g/RIOT-2019.04:/data/riotbuild/riotbase' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase/examples/hello-world' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'     \
    -e 'BOARD=stm32f4discovery' \
    -w '/data/riotbuild/riotbase/examples/hello-world/' \
    'riot/riotbuild:latest' make all 'BOARD=stm32f4discovery'
    
    b)在DOCKER=1板上制作BUILD\u

    docker run --rm -t -u "$(id -u)" \
    -v '/usr/share/zoneinfo/PRC:/etc/localtime:ro' -v '/home/shubuntu1/g/RIOT-2019.04:/data/riotbuild/riotbase' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase/examples/hello-world' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'     \
    -e 'BOARD=stm32f4discovery' \
    -w '/data/riotbuild/riotbase/examples/hello-world/' \
    'riot/riotbuild:latest' make  'BOARD=stm32f4discovery'
    
    它们几乎相同,容器的主要用途只是将源代码构建到stm32二进制文件,因为启动容器时不会添加任何控制硬件的权限

    a)
    相比,
    b)
    还有下一个输出:

    ###闪烁目标####
    sh:1:openocd:未找到
    /home/shubuntu1/g/RIOT-2019.04/examples/hello world/../../../
    Makefile.include:538:目标“flash”的配方失败
    make:**[flash]错误127

    这实际上与容器无关,它在主机上运行,根本原因是您没有在用于将stm32二进制文件闪存到设备的主机上安装
    openocd


    请参阅,search
    OpenOCD
    ,它明确要求您安装OpenOCD,然后在docker容器完成构建后,二进制文件也将在主机中,因为它在docker卷中,最后主机上的
    OpenOCD
    可以刷新您的二进制文件。

    我检查了脚本,实际上它最终将调用docker作为下一步:

    a)在DOCKER=1 BOARD=stm32f4discovery all中进行构建

    docker run --rm -t -u "$(id -u)" \
    -v '/usr/share/zoneinfo/PRC:/etc/localtime:ro' -v '/home/shubuntu1/g/RIOT-2019.04:/data/riotbuild/riotbase' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase/examples/hello-world' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'     \
    -e 'BOARD=stm32f4discovery' \
    -w '/data/riotbuild/riotbase/examples/hello-world/' \
    'riot/riotbuild:latest' make all 'BOARD=stm32f4discovery'
    
    b)在DOCKER=1板上制作BUILD\u

    docker run --rm -t -u "$(id -u)" \
    -v '/usr/share/zoneinfo/PRC:/etc/localtime:ro' -v '/home/shubuntu1/g/RIOT-2019.04:/data/riotbuild/riotbase' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase/examples/hello-world' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'     \
    -e 'BOARD=stm32f4discovery' \
    -w '/data/riotbuild/riotbase/examples/hello-world/' \
    'riot/riotbuild:latest' make  'BOARD=stm32f4discovery'
    
    它们几乎相同,容器的主要用途只是将源代码构建到stm32二进制文件,因为启动容器时不会添加任何控制硬件的权限

    a)
    相比,
    b)
    还有下一个输出:

    ###闪烁目标####
    sh:1:openocd:未找到
    /home/shubuntu1/g/RIOT-2019.04/examples/hello world/../../../
    Makefile.include:538:目标“flash”的配方失败
    make:**[flash]错误127

    这实际上与容器无关,它在主机上运行,根本原因是您没有在用于将stm32二进制文件闪存到设备的主机上安装
    openocd


    请参阅,search
    OpenOCD
    ,它明确要求您安装OpenOCD,然后在docker容器完成构建后,二进制文件也将位于主机中,因为它位于docker卷中,最后,主机上的
    openocd
    可以刷新二进制文件。

    Step2~Step6在容器中?所有不在容器中?Step2~Step6在容器中?所有不在容器中