#2020征文-开发板#鸿蒙小车开发板Linux环境搭建
华为小车是Hi3861开发板,属于WLan联结类产品。主要根据官网文档,https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998来搭建。
H93861需要搭建Linux编译环境和Windows开发环境。我自己的本机环境是Windows 10,安装了WSL Ubuntu。
这里先说明Linux开发环境搭建情况。
一、shell改为bash
ls -l /bin/sh
# 返回 /bin/sh -> dash,说明就是bash,不用修改
二、安装Python环境
1、安装Python3.7以上版本
python3 --version
# 返回 Python 3.8.5,高于3.7版本,不用升级
2、将python3 链接到 python
which python3
# 返回 /usr/bin/python3,根据返回内容完成ln操作
ln -s /usr/bin/python3 /usr/bin/python
python --version
# 返回 Python 3.8.5,说明python链接成功
3、安装并升级Python包管理工具(pip3)
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
4、安装python模块
sudo pip3 install setuptools kconfiglib pycryptodome six ecdsa
其中的pycryptodome没有安装成功,通过下载安装包方式进行安装,去https://pypi.org/project/pycryptodome/#files网址下载pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl,然后执行
wget https://files.pythonhosted.org/packages/0a/94/0a2dbcdff4b409e1eaacba95593b25e5eaec05237fccdeaf1c154b2771e4/pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl
sudo pip3 install pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl
5、安装Scons
sudo apt-get install scons -y
scons -v
# 返回如下内容:
SCons by Steven Knight et al.:
script: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog
engine: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog
engine path: ['/usr/lib/scons/SCons']
Copyright (c) 2001 - 2019 The SCons Foundation
6、安装gn和ninja
cd ~/
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
tar -xvf gn.1523.tar
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
tar -xvf ninja.1.9.0.tar
vim /etc/profile
# 在最后添加如下内容
export PATH=/home/XXX/gn:/home/XXX/ninja:$PATH
# 保存文件并退出后执行
source /etc/profile
7、安装gcc_riscv32
前面的步骤,尽管有出错的地方,总体还算比较顺利。这一步骤,坑点很多,根据文档无法完成部署,也不知道文档什么时间完善。二话不说,直接在官网提交意见反馈。
1、从github下载源代码,费老劲了。我整整折腾了一个周,ubuntu下用git clone命令行下载不成功,windows下用github desktop工具也下载不成功,用网页方式进github网站下载zip竟然总是失败。这也太难了。最终,还是下载zip方式下载了几个源代码包。
2、先下载整个riscv-gnu-toolchain,然后删除riscv-newlib、riscv-binutils、riscv-gcc等目录,再重新下载对应的低版本的内部包。为了简化操作,还是建议在gitee上建一个不用修改的完整的包。
3、riscv-gcc-7.3.0需要打补丁。按照89411.patch上写的,我找到对应的文件gcc/config/riscv/riscv.c,可是发现patch包写的行号完全不对应。我找了所有版本的riscv.c源代码,结果没有一个跟patch包里的行号一致的,这咋改?
4、GPM、MPFR的安装脚本一毛一样,包名、目录名啥的完全一样,这写错了吧?
5、编译binutils倒是成功了,但是newlib编译失败,告诉没有riscv32-unknown-elf-cc命令,我已经把/opt/gcc_riscv32/bin加入到PATH中,该目录下确实没有这个文件。gcc也一样编译失败,报size_t未定义。
我实在没法了,直接找了已经打包好的gcc-riscv,才继续下去。
1)安装基础编译软件
sudo apt-get install gcc g++ flex bison texinfo
2)下载riscv-gnu-toolchain交叉编译工具链。
官网的源代码方式无法正常编译安装。
从如下网址获取http://tools.harmonyos.com/mirrors/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz已经打包好的编译工具,直接解压缩并放到/opt/gcc_riscv32/目录下。
cd ~/
wget http://tools.harmonyos.com/mirrors/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
sudo tar -xvf gcc_riscv32-linux-7.3.0.tar.gz
sudo mv gcc_riscv32/ /opt/gcc_riscv32/
vim /etc/profile
# 最后修改为如下内容
export PATH=/home/XXX/gn:/home/XXX/ninja:/opt/gcc_riscv32/bin:$PATH
# 保存文件并退出后执行
source /etc/profile
# 运行如下命令判断是否安装正确
riscv32-unknown-elf-gcc -v
# 最后返回的是:gcc version 7.3.0 (GCC)
至此,Linux编译环境搭建完成。
小车开发编译环境搭建
官方文档里这个riscv-gcc的编译步骤看起来的确是有问题。