Hispark WiFi Iot的代码需要在Linux环境下才能进行编译。前几天在进行编译环境的搭建,我使用WM虚拟机+Ubuntu/Deepin系统镜像进行搭建Linux编译环境。但是这个过程并不顺利,经过了几天的摸索得到了一些经验和方法,已经一次性在Ubuntu18/Ubuntu20/Deepin15系统上完成编译环境的搭建,并且一次性编译成功。接下来我将我的一些经验和搭建过程的一些关键点分享给大家。
一、关键要素
二、搭建准备
三、编译环境搭建
四、编译验证
五、总结
一、关键要素
Linux编译环境搭建的关键点有三个:
1、python3的版本
Ubuntu/Deepin系统都默认自带python3,但是不同版本系统所带python3的版本都不一样。但是HisparkWiFi Iot的代码编译需要python3版本在3.7以上。如果系统自带的python3的版本在3.7以上,可以不用重新安装python3。如果是低于3.7版本的,则需要重新安装python3。例如我安装的Ubuntu20系统就自带3.8版本的python 3,不需要再安装python3。Ubuntu18自带3.6版本python3,Deepin15自带3.5版本pyhon3,这则需要重新安装python3。
Python3版本可以通过 python3 –version或者python –version命令查看。
2、pip3是否对应你python3的版本
需要使用python包软件管理工具pip3,可以进行开发工具的安装和下载。安装完新的python3,一定要安装和升级pip3工具,让pip3与新的python3对应。
我之前就出现过安装完python3之后,没有升级pip3,使用pip3命令进行开发工具安装时,都没有被安装到正确位置。
我使用的Ubuntu18自带的python3版本为3.6。我重新下载了python3.8,但是没有升级pip3,这时pip3会跟之前的python3.6对应。这时使用pip3下载工具时,会把工具下载到/usr/local/lib/python3.6 ,但是我们需要的是工具应该安装到/usr/local/lib/python3.8,最后再编译的时候,就会出现python相关的错误。
所以说一定要确认好pip3是否跟python3相关对应。可以使用pip3 –version命令进行查看。例如我的Ubuntu18 python3版本为3.8。输入pip3 –version即可看到pip3对应到了python3.8。
注意有些系统默认是没有pip3命令的例如Deepin15默认没有pip3命令,而是使用pip3.X命令,3.X对应的是python3的版本。可以使用which pip3.X 查看pip3.X的地址,再使用软连接命令,把pip3.X链接到pip3。
3、开发工具是否都能正确安装
Harmony提供的编译环境搭建指导中(地址为https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998),开发工具安装方式有两种:命令行方式,安装包方式。命令行方式:输入命令即可自动完成包的下载和安装。安装包:先在网上把安装包下载下来,再执行命令进行安装。命令行方式虽然省事,但是如果网络不好,很有可能有些东西没下载成功,导致安装失败。我推荐使用安装包方式,这样可以按照的工具版本使我们所需要的,而且安装包工具内容不会被遗漏。每个开发工具安装包都不大,很快就能下载下来,安装包可以在Linux系统上下载,也可以在windows上下载再通过共享文件夹传入linux中。我都是使用安装包方式进行开发工具的安装,最后都搭建成功了。
二、搭建准备
1、虚拟机安装
其实Linux系统环境有很多种方式,我使用的虚拟机WM+Ubuntu/Deepin镜像的方式。
但是,这里我就不再说明虚拟机安装步骤了。大家可以某度一下,网上很多教程。
建议安装Ubuntu20版本,该版本python3版本为3.8,可以省去python3和pip3的安装。
安装启动完之后,记得设置国内的软件更新源。
2、Samba安装
如何完成windows和linux的文件共享?有一种方法,使用samba工具。
(1)输入命令
sudo apt-get install samba
(2)输入命令
sudo apt-get install samba-common
(3)执行命令打开samba配置文件
sudo vim /etc/samba/smb.conf
(4)修改samba配置文件
在最后加入
[harmony]
comment = harmony
browseable = yes
path = /home/lyj/harmony/code
create mask = 0700
directory mask = 0700
valid users = lyj
force user = lyj
force group = lyj
public = yes
available = yes
writable = yes
上面内容需要根据你实际情况进行修改。
修改说明如下。
[harmony] --在windows开启网络驱动器时需要使用到
path = /home/lyj/harmony/code --相当于设置了共享文件夹的所在路径
valid users = lyj --修改为你linux的用户名
force user = lyj --修改为你linux的用户名
force group = lyj --修改为你linux的用户名
(5)设置samba密码
sudo smbpasswd -a lyj --lyj修改为你的用户名
(6)重启samba服务
sudo service smbd restart
(7)查看linux网络ip
输入 ifconfig
(8)设置windows网络驱动器
a、 打开计算器选择映射网络驱动器
b 、输入\192.168.3.32harmony
192.168.3.32修改为你ifconfig得到的ip;harmony修改为smb.conf中[]里面的值,例如我上面第④点[harmony]
c 、最后输入linux的用户名和密码就行了
d设置成功后,如下图所示。
三、编译环境搭建
在编译环境搭建的时候,一定要注意我上面所说的几个关键点。我是在Harmony官方的指导文档上做了一些修改,确保大家都能一次性搭建成功。下面的操作都是在Linux系统上终端输入命令行进行的,而官方指导文档是在windows使用putty远程连接到linux进行操作,本质都是一样。
1、python3默认版本确认
先看系统自带python3的版本是什么,如果系统自带的python3的版本在3.7以上,可以不用重新安装python3,如果是低于3.7版本的,则需要重新安装python3。
命令行输入python3 –version
2、pip3是否和新安装的python3对应
输入pip3 --version,可以观察到pip3与python对应情况。
3、将Linux shell改为bash
(1)查看shell是否为bash,在终端运行如下命令
ls -l /bin/sh
如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:
(2)在终端运行如下命令,然后选择 no。
sudo dpkg-reconfigure dash
4、安装Python环境
(1)输入如下命令,查看Python3版本号,python3版本大于3.7,则可不需要重新安装,否则需要重新安装python3
python3 --version
(2)python3安装
如果需要安装python,参考官方文档。
(3)如果python重新安装后,将新的python3路径链接到"/usr/bin/python"
a、查看python3.8路径在哪
which python3.8
b、设置软链接
cd /usr/bin && sudo rm python && sudo ln-s /usr/local/bin/python3.8 python && python --version
其中/usr/local/bin/python3.8替换为which python3.8得到的实际路径。
可能会出现错误提示python文件不存在的情况,那么就输入cd /usr/bin && sudo ln -s/usr/local/bin/python3.8 python && python –version
C、返回python3的版本号则设置成功。
(4)安装并升级Python包管理工具(pip3)。
我采用安装包方式进行安装。
A、输入命令
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
这是可能提示curl命令不存在,这时需要先执行
sudo apt install curl
b、输入命令
python get-pip.py
c、确认pip3版本是不是跟python3版本对应,输入命令
pip3 –version
注意在Deepin15 系统下默认没有pip3命令,需要把pip3命令链接到pip3.X。
(5)python模块setuptools
pip3 install setuptools
(6)安装GUImenuconfig工具(Kconfiglib),官方建议安装13.2.0+版本
a、下载.whl 文件(例如kconfiglib-14.1.0-py2.py3-none-any.whl)。
下载路径:https://pypi.org/project/kconfiglib#files。
b、运行如下命令,安装.whl文件。需要先进入到文件目录下。
sudo pip3 install kconfiglib-14.1.0-py2.py3-none-any.whl
(7)安装GUImenuconfig工具(Kconfiglib),官方建议安装13.2.0+版本
我使用安装包方式安装
a、下载.whl文件该文件需要跟python3版本对应
(例如我的是python3.8则下载:pycryptodome-3.9.8-cp38-cp38-manylinux1_x86_64.whl)。下载路径:https://pypi.org/project/pycryptodome/#files。
b、运行如下命令,安装.whl文件。 需要先进入到文件目录下。
sudo pip3 install pycryptodome-3.9.8-cp38-cp38-manylinux1_x86_64.whl
(8)安装six
下载.whl文件(例如:six-1.14.0-py2.py3-none-any.whl)。
下载路径:https://pypi.org/project/six/#files
运行如下命令,安装.whl文件。要先进入到文件目录下。
sudo pip3 install six-1.14.0-py2.py3-none-any.whl
(9)安装ecdsa
a、下载.whl文件(例如:ecdsa-0.16.0-py2.py3-none-any.whl)。
下载路径:https://pypi.org/project/ecdsa/#files
b、运行如下命令,安装.whl文件。要先进入到文件目录下。
sudo pip3 install ecdsa-0.16.0-py2.py3-none-any.whl
5、安装Scons
a、下载Scons安装包,官方推荐SCons版本是3.0.4以上,这里我下载4.0.1版本。
b、解压下载的SCons源码包到任意目录
c、进入解压目录,执行命令进行安装
sudo python3 setup.py install
d、查看scons是否安装正确,输入命令
scons -v
6、安装编译工具环境
(1)安装gn
a、下载gn工具
下载路径:https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
b、解压gn安装包至~/gn路径下。
输入命令tar -xvf gn.1523.tar -C ~/
(1)安装ninja
a、下载ninja工具。
下载路径:https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
b、解压ninja安装包至~/ninja路径下。
tar -xvf ninja.1.9.0.tar -C ~/
(3)安装gcc_riscv32
a、下载gcc_riscv32工具
下载路径:
https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
b、解压gcc_riscv32安装包至~/gcc_riscv32路径下。
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C~/
(4)设置环境变量
a、vim ~/.bashrc
b、将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
export PATH=~/gn:$PATH
export PATH=~/ninja:$PATH
export PATH=~/gcc_riscv32/bin:$PATH
c、生效环境变量。
source ~/.bashrc
d、查看环境变量设置是否正确
输入env
(5)输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
riscv32-unknown-elf-gcc -v
四、编译验证
(1)源码获取
获取地址为:
https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
可以直接在linux上获取,也可以在先在windows获取,再通过共享文件夹传入到linux。
(2)源码解压
源码必须在linux系统里进行解压。解压目录推荐为共享文件夹目录。
进入到源码包目录,使用下面命令进行解压
tar -xzvf code-1.0.tar.gz(该命令默认解压到源码包目录下)
(3)编译
进入解压目录,执行一下命令
python build.py wifiiot
执行结果
五、总结
1、官方要求python3的版本需要在3.7以上,所以我们需要注意linux系统python3的版本。
2、注意pip3命令是不是对应最新安装的python3版本。
3、建议能使用安装包方式进行工具的安装,这样才能确保安装的工具版本是我们所需要的版本。
4、不同的操作系统,python3和pip3的安装都不一样,上面针对的是Ubuntu。其他系统可以自行某度一下进行查找,网上很多。我在Deepin15上安装python3和pip3就是在网上查找教程进行安装的。
只要python3和pip3安装好,其他的开发工具安装安装基本和上面类似。
5、linux编译环境搭建所需要的安装包和源码,我都放在百度云网盘,大家需要可以去下载。
网盘:https://pan.baidu.com/s/1iHcA08lbHk5isuEBrHPU1w
提取码:vz9c