为树莓派Pico配置交叉编译环境和工具链arm-none-eabi-gcc时可能会遇到的错误以及解决方案
本文是一个类似手册的文章,用来记录可能遇到的错误。你可以通过侧栏选择遇到的错误来查看详细信息。
No install step for ‘ELF2UF2Build’
遇到这种错误有两种原因:
- 安装了版本不对或者不完整的
arm-none-eabi-gcc; - 没有使用正确的 C/C++ 的编译器,导致编译出来的
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 配置文件进行设置
这时候你可以选择在你的 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来激活这个更改,或者你也可以关闭终端再次打开。
在CMakeLists.txt中进行设置
你可以在 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,
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,再次进行构建即可。
有些错误因为我没记笔记一时想不起来,后面想起来再进行补充。希望能帮到有需要的人~
相关文章:
为树莓派Pico配置交叉编译环境和工具链arm-none-eabi-gcc时可能会遇到的错误以及解决方案
本文是一个类似手册的文章,用来记录可能遇到的错误。你可以通过侧栏选择遇到的错误来查看详细信息。 No install step for ‘ELF2UF2Build’ 遇到这种错误有两种原因: 安装了版本不对或者不完整的arm-none-eabi-gcc;没有使用正确的 C/C 的…...
Yum 部署K8S集群
目录 1、准备环境 (温馨提示:尽量一次完成集群) 2.安装master节点 3、安装k8s-master上的node 4、安装配置k8s-node1节点 5、安装k8s-node2节点 6、为所有node节点配置flannel网络 7、配置docker开启加载防火墙规则允许转发数据 一. 环…...
初阶C语言-操作符详解(下)
🌞 “等春风得意,等时间嘉许!” 接下来,我们把操作符没学完的继续学完! 操作符详解 6.2sizeof和数组 7.关系操作符8.逻辑操作符9.条件操作符10.逗号表达式11.下标引用、函数调用和结构成员12.表达式求值12.1隐式类型转…...
reposync命令——下载yum仓库中全部的包到本地
reposync命令可以将远端yum仓库里面的包全部都下载到本地。这样构建自己的yum仓库,就不会遇到网络经常更新包而头疼的事情了。 reposync命令在软件包 yum-utils 里面,需要保证yum-utils已安装。 yum install yum-utils -y 常用参数 -r :指定…...
LC-杨辉三角
LC-杨辉三角 链接:https://leetcode.cn/problems/pascals-triangle/submissions/ 上图就是一个杨辉三角,每个数等于他左上角的数与右上角的数之和。 第一行就是一个1;第二行是两个1;第三行的2就是它肩膀上两个1之和,其余的类似。…...
Golang空结构体struct{}的作用是什么?
文章目录 占位符:通道标识:键集合:内存占用优化:总结: 在Go语言中,空结构体 struct{}是一种特殊的数据类型,它不占用任何内存空间。空结构体没有任何字段,也没有任何方法。尽管它看起…...
自然语言处理从入门到应用——LangChain:提示(Prompts)-[示例选择器(Example Selectors)]
分类目录:《自然语言处理从入门到应用》总目录 如果我们拥有大量的示例,我们可能需要选择在提示中包含哪些示例。ExampleSelector是负责执行此操作的类。 其基本接口定义如下所示: class BaseExampleSelector(ABC):"""Interf…...
【实战项目】c++实现基于reactor的高并发服务器
基于Reactor的高并发服务器,分为反应堆模型,多线程,I/O模型,服务器,Http请求和响应五部分 全局 反应堆模型 Channel 描述了文件描述符以及读写事件,以及对应的读写销毁回调函数,对应存储ar…...
Docker部署ElasticSearch7
前言 帮助小伙伴快速部署研发或测试环境进行学习测试。springboot版本需要与ElasticSearch版本想对应,不同版本api不一致,会产生异常调用的情况。 一、拉取镜像 这里选择固定版本7.15.2 docker pull docker.elastic.co/elasticsearch/elasticsearch:…...
【算法|数组】滑动窗口
算法|数组——滑动窗口 引入 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0 。 示例…...
笙默考试管理系统-MyExamTest----codemirror(2)
笙默考试管理系统-MyExamTest----codemirror(2) 目录 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试管理系统-MyExamTest----codemirror 四、 笙默考试管理系统-MyExamTest---…...
一次面试下来Android Framework 层的源码就问了4轮
说起字节跳动的这次面试经历,真的是现在都让我感觉背脊发凉,简直被面试官折磨的太难受了。虽然已经工作了七年,但是也只是纯粹的在写业务,对底层并没有一个很深的认识,这次面试经历直接的让我感受到我和那些一线大厂开…...
知网期刊《中阿科技论坛》简介及投稿须知
知网期刊《中阿科技论坛》简介及投稿须知 主管单位:宁夏回族自治区科学技术厅 主办单位:宁夏回族自治区对外科技交流中心(中国一阿拉伯国家技术转移中心) 刊 期:月刊 国际刊号:ISSN 2096-7268 国内刊号:CN 64-…...
kafka是有序的吗?如何保证有序?
首先,Kafka无法保证消息的全局有序性,这是因为Kafka的设计中允许多个生产者并行地向同一个主题写入消息。而且,一个主题可能会被划分为多个分区,每个分区都可以在独立的生产者和消费者之间进行并行处理。因此,生产者将…...
centos 定时脚本检测tomcat是否启动,未启动情况下重新启动
编写脚本 tomcatMonitor.sh #!/bin/sh. /etc/profile . ~/.bash_profile#首先用ps -ef | grep tomcat 获得了tomcat进程信息,这样出来的结果中会包含grep本身, #因此通过 | grep -v grep 来排除grep本身,然后通过 awk {print $2}来打印出要…...
【Unity3D】消融特效
1 前言 选中物体消融特效中基于 Shader 实现了消融特效,本文将基于 Shader Graph 实现消融特效,两者原理一样,只是表达方式不同,另外,选中物体消融特效中通过 discard 丢弃片元,本文通过 alpha 测试丢弃片元…...
10.Eclipse配置Tomcat详细教程、如何使用Eclipse+tomcat创建并运行web项目
一、Tomcat的下载官网 -> 进入官网显示如图所示的界面,在下下载的是Tomcat9.0版本,你可以自己选一款 点击然后进入下面这个界面 最好是在你的D盘建立一个文件夹,把它解压在里面,文件夹名自己来吧,自己能知道里面装…...
MySQL索引1——索引基本概念与索引结构(B树、R树、Hash等)
目录 索引(INDEX)基本概念 索引结构分类 BTree树索引结构 Hash索引结构 Full-Text索引 R-Tree索引 索引(INDEX)基本概念 什么是索引 索引是帮助MySQL高效获取数据的有序数据结构 为数据库表中的某些列创建索引,就是对数据库表中某些列的值通过不同的数据结…...
2023-08-06力扣今日四题
链接: 剑指 Offer 59 - II. 队列的最大值 题意: 如题,要求O1给出数列的最大值 解: 类似滑动窗口 1 1 2 1 2用双端队列存储成2 2(每次从前面获取最大值,后面插入新数字)也就是第一个2覆盖了…...
Kubernetes入门 三、命令行工具 kubectl
目录 语法操作示例资源操作Pod 与集群资源类型与别名格式化输出 kubectl 是 Kubernetes 集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。 语法 使用以下语法从终端窗口运行 kubectl 命令: kub…...
DeepSeek-OCR-2参数详解:--max_pages --batch_size --conf_threshold 高级调优指南
DeepSeek-OCR-2参数详解:--max_pages --batch_size --conf_threshold 高级调优指南 1. 引言:为什么需要调优参数? 如果你用过DeepSeek-OCR-2,可能已经体验过它强大的文档解析能力。但你是否遇到过这样的情况:处理多页…...
2-4有关项目‘基于音乐喜好的智能选型平台’中间层建立
建立中间层代码:select * from music_top250;CREATE TABLE yinyvepaihang.yinyve_info_mid (-> id INT PRIMARY KEY,-> yinyve_name VARCHAR(500) NOT NULL,-> yinyve_info TEXT NOT NULL,-> author VARCHAR(255),-> publisher …...
别再重复造轮子了 教你一招:把全球开源宝库,变成你个人的技能库
文章目录前言一、为什么说"重复造轮子"是程序员最大的浪费?二、全球开源宝库到底有多大?你可能低估了三、找轮子的艺术:如何从海量仓库里挖出宝藏?3.1 善用AI搜索,别再用传统方式了3.2 关注Awesome系列和 cu…...
终极ARC-AGI测试功能扩展指南:从零开始自定义AI推理任务
终极ARC-AGI测试功能扩展指南:从零开始自定义AI推理任务 【免费下载链接】ARC-AGI The Abstraction and Reasoning Corpus 项目地址: https://gitcode.com/GitHub_Trending/ar/ARC-AGI 欢迎来到ARC-AGI(Abstraction and Reasoning Corpus for Art…...
VisionPro图像掩膜进阶技巧:3步优化PMAlign工具匹配准确率(附真实案例)
VisionPro图像掩膜进阶技巧:3步优化PMAlign工具匹配准确率(附真实案例) 在精密视觉检测领域,PMAlign工具的准确率直接决定了整个系统的可靠性。上周在调试某半导体晶圆检测项目时,遇到一个典型问题:当检测图…...
ToF传感器自适应距离滤波框架ToFFilter深度解析
1. ToFFilter 库深度解析:面向 ToF 传感器的自适应距离滤波框架Time-of-Flight(ToF)传感器,如 ST 的 VL53L0X、VL53L1X 及其后续型号,在工业测距、机器人避障、手势识别、液位监测等嵌入式场景中已成主流。然而&#x…...
别再死记硬背!用Multisim仿真带你直观理解TTL反相器的工作原理
用Multisim仿真拆解TTL反相器:从波形透视晶体管开关艺术 当你第一次在教科书上看到TTL反相器的原理图时,那些密密麻麻的三极管、电阻和二极管是否让你望而生畏?传统学习方式要求我们死记硬背各个工作区间的电压阈值和电流路径,但这…...
OpenClaw 大结局——接入个人微信诤
本课概览 Microsoft Agent Framework (MAF) 提供了一套强大的 Workflow(工作流) 框架,用于编排和协调多个智能体(Agent)或处理组件的执行流程。 本课将以通俗易懂的方式,帮助你理解 MAF Workflow 的核心概念…...
别再手动拼中间件了!用Go Kratos框架5分钟搞定一个带链路追踪的微服务
别再手动拼中间件了!用Go Kratos框架5分钟搞定一个带链路追踪的微服务 每次启动新项目时,你是否也厌倦了重复配置日志、监控、链路追踪这些基础设施?作为Go开发者,我们总在业务代码和中间件整合之间反复横跳。今天要介绍的Kratos框…...
40岁单身妈妈做装修监理16年:月入过万的真相与生活方式的选择
看到那个‘40岁单身妈妈扛楼16年月入过万’的新闻,我第一反应不是收入,是‘16年’。在这个行业里,能坚持16年,还是一位妈妈,她扛的绝对不是几袋水泥那么简单。我自己接触过不少从一线做起来的监理,尤其是女…...
