与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在容器中?所有不在容器中