基于Ubuntu 22.04 编译chip-tool工具

news2024/11/23 21:41:04

前言

编译过程有点曲折,做下记录,过程中,有参考别人写的博客,也看github 官方介绍,终于跑通了~

环境说明:

  • 首先需要稳定的梯子,可以访问“外网”
  • ubuntu 环境,最终成功实验在Ubuntu 22.04,应该主要体现在python 库的版本要求

基础:
关于梯子,我使用的是虚拟机NAT方式上网,走的主机windows 网络代理(clash 软件)
关于工具,另外git submodule 需要熟悉一下,有些库在网络状况可以的情况下,依然拉不下来,需要手动更新。

官方

https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/chip_tool_guide.md

https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/BUILDING.md

编译

1.clone 代码

git clone https://github.com/project-chip/connectedhomeip.git

看到有人分享用的siliconlabs 库的matter仓库,也是可以的,暂时不确定区别是什么

2.更新子模块

git submodule update --init --recursive

注意,这里大概率会出现拉取代码有问题,需要手动更新,可以将缺失的目录手动删除掉,然后使用下面命令可以拉取代码

git submodule update


比如编译时候提示找不到third_party/nlunit-test 文件,查看后发现文件夹内repo 目录是空的,手动删除掉,然后手动更新,通过find 命令查看文件,或者tree命令查看目录结构,验证文件成功下载

3.基本编译工具安装

sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev 
sudo apt-get install libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev 
sudo apt-get install python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev

sudo apt-get install libsdl2-dev

4.编译前准备

This script takes care of downloading GN, ninja, and setting up a Python environment with libraries used to build and test.

翻译过来就是会安装GN,和Python环境以及一些库,来编译。关于GN和python 的一些具体用法,后面再看下具体使用方法,这里很关键,成败有一半卡在这里,

source scripts/bootstrap.sh

下把正确的执行结果截图,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

细节!!! 这里不能用ssh 连接,来执行,在这里卡了比较久,直到看到这篇博客,在此之前,之前,已经问人、找博客、设置了各种代理,ssh 直连ubuntu 代理不生效(一语点醒梦中人-_-!!,感谢!!!)。

https://blog.csdn.net/digdugbomb/article/details/114403362

这里展开说下,粗鄙的理解做个记录:
看到的CPID 主要是pigweed在用,也是个开源项目pigweed。
在这里插入图片描述

所以,单独下载了代码,按照说明编译,也是报错的,打印信息都类似,看来是找对地方了,至少缩小范围。
遇到的问题,其实早在2020年已经有补丁了,推荐的办法是请点击,点击进去可以看到是修改了python 一段代码,关于使用代理下载,貌似是还有概率出现,要设置https代理为走http
在这里插入图片描述
关于代理设置我有点问题,因为我的clash 软件使用的是7890端口,ip 是10.10.122.96.我理解应该设置为
export https_proxy=http://10.10.122.96:7890

如果我设置成使用虚拟机ip方式https_proxy:=http://192.168.79.129:8080,是不应该是一样的??待确认,明确指导的还望指导

5.激活

source scripts/activate.sh

在这里插入图片描述
6.编译
参照文档开始编译了
在这里插入图片描述

在这里插入图片描述
这里报错了,还搜索了半天,准备在线安装的,无济于事,想着目的是编译chip-tool 直接编译试一下吧,转而编译chip-tool,执行命令,

./scripts/examples/gn_build_example.sh examples/chip-tool out/standalone

提示这个nlassert 编译失败,原来是自己编译出来,其他地方调用的。
在这里插入图片描述
更新文件后
在这里插入图片描述
又重新编译,保险期间,执行了
···
source scripts/bootstrap.sh
source scripts/activates.sh
···
都编译通过,基本就没啥问题了
在这里插入图片描述
成功的最后几个瞬间:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问题点:
1.提示command pw not found
https://github.com/project-chip/connectedhomeip/issues/26141
2.不要ssh 直连梯子下载
https://blog.csdn.net/digdugbomb/article/details/114403362

有价值链接:
https://github.com/project-chip/connectedhomeip/issues/2893

总结

容易遇到的问题,应该比较全面了,避免折腾半天。
最容易忽略的应该就是避免ssh 连接虚拟机来操作,看了好多博客都没说到这一点。

综合理解,首先要有梯子,其次子模块没有更新的话,手动删除,手动更新。CPID下载那里,时间过个五分钟左右不行,基本出问题了,再等久了也没用。在ubuntu 上控制台上操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Games101学习笔记 - 基础数学

向量 向量:方向和长度,没有起始位置 向量长度:各个方向平方相加开方 单位向量:向量除向量的长度 点乘 在笛卡尔坐标系中的点乘计算: 几何意思: 表示一个向量在另一个向量上的投影点乘在图形学中应用&a…

SQLite Studio 连接 SQLite数据库

1、在SQLite中创建数据库和表 1.1、按WINR,打开控制台,然后把指引到我们的SQLite的安装路径,输入D:,切换到D盘,cd 地址,切换到具体文件夹,输入“sqlite3”,启动服务 1.2、创建数据库…

最全SWAT教程:SWAT模型系统学习(建模方法、实例应用、高级进阶)

目前,水环境问题逐渐成为制约社会经济和环境可持续发展的重要因素。根据国内外研究表明,受全球环境变化和经济快速发展的影响,面源污染已逐渐成为水环境污染的第一因素。但面源污染由于具有排放分散、隐蔽,排污随机、不确定、不易…

关于封装的定义?以及API接口封装作用有哪些

封装是面向对象编程中的一个重要概念,它指的是将数据和程序代码包含在类中,并对外部对象隐藏其内部实现细节,只提供公共接口。这种方式可以有效地保护数据,防止被外部对象随意访问或修改,同时也更容易维护、升级和复用…

Linux下top命令用法详解

一、命令介绍 Linux top命令用于实时显示 process (进程)的动态。它用于监控正在运行系统负荷的信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的资源占用情况等。 使用权限:所有使用者 二、命令详解 在命令行下输入…

串稳定混合交通的协同自适应巡航控制:基准和以人为本的设计(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 串稳定混合交通的协同自适应巡航控制是一种针对复杂交通环境的控制方法,旨在实现交通系统的高效运行和安全性。其中…

ATTO488 NHS ester ,新型亲水性荧光标记物,具有良好的水溶性

陕西新研博美生物科技有限公司MISS.wu小编(2023.7月26日)为大家整理以下的内容: Atto488-NHS是一种新型亲水性荧光标记物,具有良好的水溶性。这种染料表现得很浓吸收、高荧光量子产率以及优异的热稳定性和光稳定性。因此&#xff…

推送docker镜像到私有/DockerHub仓库

制作本地镜像 以定制jdk11镜像为例&#xff1a; 新建文件夹jdk11下载orcale jdk11&#xff0c;复制orcale jdk11 到刚刚新建文件夹jdk11下新建Dockerfile&#xff0c;镜像对字符集和时间都做了处理 FROM centos:7 MAINTAINER cc <ccqq.com>ADD jdk-11.0.10_linux-x64_…

多线程——多线程的创建方式、常用成员方法

目录 一、什么是多线程&#xff1f; 线程与进程 进程与线程区别&#xff1a; 并发与并行 二、多线程的创建方式&#xff08;三种方式&#xff09; 第一种&#xff1a;继承Thread类方式创建 第二种&#xff1a;实现Runnable接口的方式创建 第三种&#xff1a;利用Callab…

uniapp实现预约时间选择弹窗组件

做了个组件&#xff0c;实现出当日预约时间组件&#xff0c;效果图如下 废话不多说&#xff0c;直接上代码&#xff0c;代码简单&#xff0c;参数自己任意改 <template><view class"inventory"><u-popup :show"show" :round"10"…

全国青少年信息素养大赛Scratch图形化编程_初赛_模拟二卷

全国青少年电子信息智能创新大赛Scratch图形化编程_初赛_模拟二卷 一、选择题 第 1 题 单选题 执行下面程序&#xff0c;角色会说&#xff1f;&#xff08; &#xff09; A.34 B.28 C.51 D.42 第 2 题 单选题 默认小猫角色&#xff0c;初始位置在舞台中心&#xff0c;下面…

Vuex模块化管理

如果你的项目是一个小型项目&#xff0c;就用不着使用模块化&#xff1b; 但是&#xff0c;如果你参与的项目是一个中大型项目&#xff0c;那Vuex模块化&#xff0c;必不可少&#xff0c;否则整个文件很臃肿&#xff0c;也很难管理。 通过模块化管理&#xff1a;各自模块下都有…

【Linux环境搭建篇】--- 还不会搭建Linux环境?收藏这一篇就够了

文章目录 前言&#x1f31f;一、Linux背景介绍&#x1f30f;1.1. 发展史&#x1f30f;1.2. 开源 &#x1f31f;二、搭建Linux环境&#x1f31f;三、使用 XShell 远程登陆到 Linux&#x1f31f;四、XShell 下的复制粘贴&#x1f63d;总结 前言 &#x1f467;个人主页&#xff1a…

AF647 Azide,Alexa Fluor 647 Azide,明亮且光稳定的荧光基团

文章编辑来自于&#xff1a;陕西新研博美生物科技有限公司MISS.wu​ Alexa Fluor 647 Azide&#xff0c;Alexa Fluor 647 N3&#xff0c;AF647 Azide&#xff0c;AF 647 N3| AF 647 叠氮&#xff0c;Alexa Fluor 647叠氮 | CAS&#xff1a;N/A | 纯度&#xff1a;95% PA…

vue项目加按钮,两个不同的项目当前页进行互相切换

服务器上两个项目当前页互相切换 直接使用 window.location.href 调整的页面地址 这里一定要注意服务器上项目的前缀名称即可。

【iOS】—— RunLoop和多线程相关问题总结

RunLoop 1. 讲讲RunLoop&#xff0c;项目中有用到过吗&#xff1f; RunLoop 的基本作用&#xff1a;保持程序的持续运行&#xff0c;节省 CPU 的资源&#xff0c;提高程序的性能 &#xff08; 没有事情&#xff0c;就请休眠&#xff0c;不要功耗。有事情&#xff0c;就处理&a…

如何制定数据采集解决方案?

数据采集仍是人工智能&#xff08;AI&#xff09;构建团队的主要瓶颈。原因各不相同&#xff1a;用例数据可能不足&#xff0c;深度学习等新机器学习&#xff08;ML&#xff09;技术需要更多数据&#xff0c;或者团队并未建立获取所需数据的适当流程。但无论如何&#xff0c;对…

xmind latex【记录备忘】

xmind latex 换行 换行必须要有\begin{align}和\end{align}&#xff0c;此时再在里面用\才能换行&#xff0c;如果只写112\224是不能换行的

2023第五届全国生物资源提取与应用创新论坛即将举办

01、会议背景 为进一步加强生物资源提取行业交流与合作&#xff0c;促进业“产学研用”融合&#xff0c;提升行业科技创新水平&#xff0c;增强行业国际竞争力&#xff0c;中国生物发酵产业协会、浙江科技学院、浙江工业职业技术学院、浙江省农业生物资源生化制造协同创新中心&…

JS算法之递归

含义 递归函数是指能够直接或间接调用自身的方法或函数。 // 直接 function do() {do(); }// 间接 function do() {do2(); } function do2() {do() } 每个递归函数必须有基线条件&#xff08;即停止点&#xff0c;一个不再递归调用的条件。&#xff09;否则将无限递归下去。 因…