赞
踩
本文是一个类似手册的文章,用来记录可能遇到的错误。你可以通过侧栏选择遇到的错误来查看详细信息。
遇到这种错误有两种原因:
arm-none-eabi-gcc
;elf2uf2
不对;一般出现在使用brew
安装的情况,这时候用下面的命令卸载、清理掉brew
安装的内容:
# 卸载arm-none-eabi-gcc
$ brew uninstall arm-none-eabi-gcc
# 清理掉一些下载文件
$ brew cleanup arm-none-eabi-gcc
# brew默认将二进制文件安装到/usr/local/bin/目录下,虽然前面卸载了,但是可能会有一些残留,手动删一下
$ sudo rm /usr/local/bin/arm-none-eabi-*
这时候再从官网下载安装即可。进入 Arm GNU Toolchain Downloads,用页面搜索功能搜一下“macOS”,因为链接太多了。选择你对应平台(就是处理器架构)的AArch32 bare-metal target (arm-none-eabi)
中的链接点击下载。选择AArch32
因为树莓派 Pico 的微控制器 RP2040 包含的 Arm Cortex M0 是 32 位的,也就是AArch32
,如果你下成AArch64 bare-metal target (aarch64-none-elf)
是没法编译的。
这种原因的解决方法就是设置环境变量CMAKE_C_COMPILER
和CMAKE_CXX_COMPILER
来让cmake
知道选择哪个编译器作为 C 和 C++ 代码的编译器,不然会默认选择本地的 Clang 作为编译器,但是这种编译器是编译不出我们需要的程序的。
这时候有两种解决方案。
这时候你可以选择在你的 Shell 配置文件中加入以下语句(后面的路径需要根据自己的设置进行修改):
export CC="/usr/local/bin/arm-none-eabi-gcc"
export CXX="/usr/local/bin/arm-none-eabi-g++"
或者
export CMAKE_C_COMPILER="/usr/local/bin/arm-none-eabi-gcc"
export CMAKE_CXX_COMPILER="/usr/local/bin/arm-none-eabi-g++"
然后使用source
来激活这个更改,或者你也可以关闭终端再次打开。
你可以在 CMake 项目中的CMakeLists.txt
配置文件中进行设置,在 project(...)
之前加上下面几句话:
set(CMAKE_C_COMPILER /usr/local/bin/arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER /usr/local/bin/arm-none-eabi-g++)
然后清空构建目标目录build
,再进行构建即可。
fatal error: cannot read spec file ‘nosys.specs’: No such file or directory
显示了读取不了nosys.specs
文件,这可能是因为需要读取nosys.specs
的时候,nosys.specs
还未准备好。这种错误一般出现在使用make
最后构建二进制文件的时候。解决方法就是使用make -j4
(个人测试至少为4
)来同时处理 4 个任务,这样这个错误就消失了。
这种错误信息很多,主要表现为:编译错误,查看信息发现是ld
或者arm-none-eabi-ld
导致的。这是因为最后连接器使用的-isysroot
参数错误,一般这种错误是因为连接到的是本地的 SDK,而不是Linux需要的.so
文件。
这种错误需要在 CMake 项目中的CMakeLists.txt
配置文件中、 project(...)
之前加上下面几句话(后面的路径需要根据自己的设置进行修改):
set(CMAKE_SYSROOT /usr/local/lib/arm-none-eabi/bfd-plugins/libdep.so)
然后清空构建目录build
,再次进行构建即可。
有些错误因为我没记笔记一时想不起来,后面想起来再进行补充。希望能帮到有需要的人~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。