前言
編譯過(guò)程有點(diǎn)曲折,做下記錄,過(guò)程中,有參考別人寫的博客,也看github 官方介紹,終于跑通了~
環(huán)境說(shuō)明:
- 首先需要穩(wěn)定的梯子,可以訪問(wèn)“外網(wǎng)”
- ubuntu 環(huán)境,最終成功實(shí)驗(yàn)在Ubuntu 22.04,應(yīng)該主要體現(xiàn)在python 庫(kù)的版本要求
基礎(chǔ):
關(guān)于梯子,我使用的是虛擬機(jī)NAT方式上網(wǎng),走的主機(jī)windows 網(wǎng)絡(luò)代理(clash 軟件)
關(guān)于工具,另外git submodule 需要熟悉一下,有些庫(kù)在網(wǎng)絡(luò)狀況可以的情況下,依然拉不下來(lái),需要手動(dòng)更新。
官方
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 庫(kù)的matter倉(cāng)庫(kù),也是可以的,暫時(shí)不確定區(qū)別是什么
2.更新子模塊
git submodule update --init --recursive
注意,這里大概率會(huì)出現(xiàn)拉取代碼有問(wèn)題,需要手動(dòng)更新,可以將缺失的目錄手動(dòng)刪除掉,然后使用下面命令可以拉取代碼
git submodule update
比如編譯時(shí)候提示找不到third_party/nlunit-test 文件,查看后發(fā)現(xiàn)文件夾內(nèi)repo 目錄是空的,手動(dòng)刪除掉,然后手動(dòng)更新,通過(guò)find 命令查看文件,或者tree命令查看目錄結(jié)構(gòu),驗(yàn)證文件成功下載
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.編譯前準(zhǔn)備
This script takes care of downloading GN, ninja, and setting up a Python environment with libraries used to build and test.
翻譯過(guò)來(lái)就是會(huì)安裝GN,和Python環(huán)境以及一些庫(kù),來(lái)編譯。關(guān)于GN和python 的一些具體用法,后面再看下具體使用方法,這里很關(guān)鍵,成敗有一半卡在這里,
source scripts/bootstrap.sh
下把正確的執(zhí)行結(jié)果截圖,如下:
細(xì)節(jié)?。?! 這里不能用ssh 連接,來(lái)執(zhí)行,在這里卡了比較久,直到看到這篇博客,在此之前,之前,已經(jīng)問(wèn)人、找博客、設(shè)置了各種代理,ssh 直連ubuntu 代理不生效(一語(yǔ)點(diǎn)醒夢(mèng)中人-_-!!,感謝!?。。?。
https://blog.csdn.net/digdugbomb/article/details/114403362
這里展開(kāi)說(shuō)下,粗鄙的理解做個(gè)記錄:
看到的CPID 主要是pigweed在用,也是個(gè)開(kāi)源項(xiàng)目pigweed。
所以,單獨(dú)下載了代碼,按照說(shuō)明編譯,也是報(bào)錯(cuò)的,打印信息都類似,看來(lái)是找對(duì)地方了,至少縮小范圍。
遇到的問(wèn)題,其實(shí)早在2020年已經(jīng)有補(bǔ)丁了,推薦的辦法是請(qǐng)點(diǎn)擊,點(diǎn)擊進(jìn)去可以看到是修改了python 一段代碼,關(guān)于使用代理下載,貌似是還有概率出現(xiàn),要設(shè)置https代理為走h(yuǎn)ttp
關(guān)于代理設(shè)置我有點(diǎn)問(wèn)題,因?yàn)槲业腸lash 軟件使用的是7890端口,ip 是10.10.122.96.我理解應(yīng)該設(shè)置為
export https_proxy=http://10.10.122.96:7890
如果我設(shè)置成使用虛擬機(jī)ip方式https_proxy:=http://192.168.79.129:8080,是不應(yīng)該是一樣的??待確認(rèn),明確指導(dǎo)的還望指導(dǎo)
5.激活
source scripts/activate.sh
6.編譯
參照文檔開(kāi)始編譯了
這里報(bào)錯(cuò)了,還搜索了半天,準(zhǔn)備在線安裝的,無(wú)濟(jì)于事,想著目的是編譯chip-tool 直接編譯試一下吧,轉(zhuǎn)而編譯chip-tool,執(zhí)行命令,
./scripts/examples/gn_build_example.sh examples/chip-tool out/standalone
提示這個(gè)nlassert 編譯失敗,原來(lái)是自己編譯出來(lái),其他地方調(diào)用的。
更新文件后
又重新編譯,保險(xiǎn)期間,執(zhí)行了
···
source scripts/bootstrap.sh
source scripts/activates.sh
···
都編譯通過(guò),基本就沒(méi)啥問(wèn)題了
成功的最后幾個(gè)瞬間:
問(wèn)題點(diǎn):
1.提示command pw not found
https://github.com/project-chip/connectedhomeip/issues/26141
2.不要ssh 直連梯子下載
https://blog.csdn.net/digdugbomb/article/details/114403362
有價(jià)值鏈接:
https://github.com/project-chip/connectedhomeip/issues/2893
總結(jié)
容易遇到的問(wèn)題,應(yīng)該比較全面了,避免折騰半天。
最容易忽略的應(yīng)該就是避免ssh 連接虛擬機(jī)來(lái)操作,看了好多博客都沒(méi)說(shuō)到這一點(diǎn)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-608355.html
綜合理解:
首先要有梯子
其次子模塊沒(méi)有更新的話,手動(dòng)刪除,手動(dòng)更新
CPID下載那里,時(shí)間過(guò)個(gè)五分鐘左右不行,基本出問(wèn)題了,再等久了也沒(méi)用
在ubuntu 上控制臺(tái)上操作文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-608355.html
到了這里,關(guān)于【Matter】基于Ubuntu 22.04 編譯chip-tool工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!