前言
编译过程有点曲折,做下记录,过程中,有参考别人写的博客,也看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 上控制台上操作。