本篇文章写在2023年的4月,因为Arch滚动更新的特性,我无法确定这篇文章的内容未来是否还正确,仅供大家做参考。
想看对应部分的解释的看问题那一节,不感兴趣只想看指令的看编译那一节。
可能遇到的问题
编译依赖补齐
因为MicroPython官方只提供了以Ubuntu为参考的编译依赖列表,所以我们是不知道缺哪些包的,经过我的试错,得出以下结论。
我是参考Arch Linux官方论坛上的方法进行的Arch的安装。之后也没额外捣鼓过编译组件的事。所以在编译环境这一块,应该和大多数Arch用户差别不大。我们需要额外在安装以下几个包:arm-none-eabi-gcc、arm-none-eabi-newlib、cmake。吐槽一下,其实这几个包在官方教程里都或多或少的提到了,但前两个说的是只在编译STM32固件时需要,整的我还以为进错目录了;后者则是在仓库里rp2目录下的readme文件提到的。只能说官方文档真该更新下了。
sudo pacman -S arm-none-eabi-gcc arm-none-eabi-newlib cmake
这样下来编译依赖的问题就解决了。
加载子模块
到这一步,按理说有足够Git使用经验的朋友就可以自行编译了。不过也不知道是为什么,MicroPython项目中用到了子模块,但完全没在教程里提到这回事。而说实话不少入门的Git教程压根没讲这功能。我之前不怎么用Git,就成功在这里踩雷了。MicroPython 中使用了多个子模块,如果没有对他们完成初始化并更新就会导致编译时报错。
#在项目的根目录执行以下指令
git submodule init
git submodule update
在拉取子模块时Git是根据.gitsubmodule
这个文件里的链接来进行的。如果你网络不太好我建议你用什么码云之类的中转下,这里不详细讲了。
编译过程
安装编译依赖
sudo pacman -S arm-none-eabi-gcc arm-none-eabi-newlib cmake
克隆仓库和拉取子模块
接下来的步骤就按照官方给出的教程就足够了,姑且也写一下。
第一步是克隆官方的项目并按照上面说的的方法加载子模块。
git clone https://github.com/micropython/micropython.git
git submodule init
git submodule update
编译交叉编译器
cd mpy-cross
make
编译Pico固件
#在 ports/rp2 目录下执行以下指令
make submodules
make clean
make
最后一次更新于2023-04-26
0 条评论