【老杜甩干货】使用WSL搭建鸿蒙 IOT最方便的编译环境

2020-10-18 21:20:42  226 IOT 编译环境 WSL 鸿蒙系统
分享
2
本帖最后由 杜潇泊 于 2020-10-19 11:30 编辑

官方给出的开发环境建议,其中Linux机器主要用于编译,windows机器主要用于开发和调试。
硬件连线图.png
但是这有个问题,你在windows上编辑,在linux上编译,就存在一个文件同步的过程。
常见的方案有两个:
  • 文件在linux机器上,共享给windows机器。但是这样windows上各种IDE的反应都会比较慢,毕竟是操作远程文件
  • 文件放在windows上,要编译的时候想办法同步(FTP\GIT等方法)给linux服务器。这样在调试的时候又非常的麻烦
其实我们用WSL可以解决这个问题。WSL(Windows Subsystem for Linux)其实也是一种虚拟机。这里我们少扯没用的,直奔主题。
这里就是用WSL来替代这个Linux server,好处就是上面文件同步过程完全可以免了。 你可以用你喜欢的任何编辑器在windows上直接编辑本地项目文件,不需要任何同步过程就可以随时在linux上进行编译。
1. 安装WSL
这里得提一下WSL的安装要求:
  • Win10 专业版及以上
  • 机器支持虚拟化(这年头估计都有)
控制面板->程序和功能(就是我们平时卸载软件的那个地方->启动和关闭Windows功能 打开其中下面两项
  • Hyper-V (这个我很迷惑,看到很多地方都描述不依赖这个,但是没有经常报错。索性安装了吧)
  • 适用于Linux的Windows子系统

2. 安装Ubuntu
打开windows应用商店,搜ubuntu。点安装就行,没啥需要注意的。安装完成后,你的开始菜单里会出现一个叫Ubuntu的应用程序。点击这个就能启动你安装的ubuntu了
但是这里要废话几句,安装完系统后,这几个步骤一定要做:
1. 更换apt的源
https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11IbNTdm
2. 更新系统,免得遇到一些奇奇怪怪的问题
sudo apt update
sudo apt upgrade
3. 更换默认shell为bash
鸿蒙的编译环境要求shell是bash,无脑执行如下命令,然后选择No
sudo dpkg-reconfigure dash
3. 搭建编译环境
3.1 下载必须的材料
资料里零零散散好几处写了要下载的各种软件、代码,我这里根据我实际使用情况汇总了一下。方便大家直接批量下载.

内容要求链接
全量源码(code-1.0.tar.gz)必须https://repo.huaweicloud.com/HarmonyOS/os/1.0/code-1.0.tar.gz
Hi3861解决方案(二进制)先不下,笔者还没找到用处https://repo.huaweicloud.com/harmonyos/os/1.0/wifiiot-1.0.tar.gz
交叉编译器(gcc_riscv32-linux-7.3.0.tar.gz)必须https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
Python3.7+版本>=3.7稍后我们使用apt安装,更方便
SCons3.0.4+版本>=3.0.4稍后我们使用apt安装,更方便
build-essential必须稍后我们使用apt安装,更方便
gn必须https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
ninja必须https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
3.2 在ubuntu上安装必要的软件
  • 安装依赖的各种软件包
这里偷懒直接甩命令了,逐条执行就行
sudo apt install python3 -y
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo apt-get install python3-setuptools python3-pip -y


sudo pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/


sudo apt install build-essential
sudo pip3 install --upgrade pip
sudo pip3 install setuptools
sudo pip3 install kconfiglib
sudo pip3 install pycryptodome
sudo pip3 install six --upgrade --use-feature=2020-resolver six
sudo pip3 install ecdsa
sudo apt install scons -y


  • 安装下载好的交叉编译器、gn 和 ninjia
到这里你可能想问“我在Windows上下载的文件怎么访问?” 很简单,看看你ubuntu里目录/mnt/。 下面就是你的windows盘符。
把这三个软件包拷贝到当前用户的用户目录(cd ~) 使用如下3个命令解压
tar -xvf gn.1523.tar -C ~/
tar -xvf ninja.1.9.0.tar -C ~/
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/
解压完成后,修改vim ~/.bashrc 在末尾增加
export PATH=~/gn:$PATH
export PATH=~/ninja:$PATH
export PATH=~/gcc_riscv32/bin:$PATH
3.3 编译验证
  • 解压全量代码(code-1.0.tar.gz)
解压命令:tar -xzf code-1.0.tar.gz
需要注意的是:
  • 这个压缩包里面没有顶层目录。如果你不喜欢解压出来的文件直接在你的当前文件展开,提前自己创建一个目录
  • 一定要在linux中解压,免得后续麻烦
  • 启动编译
源码中包含了默认的Demo代码,我们可以直接用这个demo代码验证一下我们编译环境是否搭建成功 在解压目录执行如下命令即可:
python build.py wifiiot
在笔者的老爷机(E3-1230V3 4c8t 3.3GHz)上差不多1分钟左右就能完成编译。 如果你看到如下打印,恭喜你,编译成功了。

< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >
                              BUILD SUCCESS
< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >

See build log from: /mnt/f/Projects/手工打码/vendor/hisi/hi3861/hi3861/build/build_tmp/logs/build_kernel.log
[197/197] STAMP obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons.stamp
ohos wifiiot build success!



相关文章

刘洋 2020-10-19 10:41:34
WSL是什么版本的?源代码放在非Linux分区上能编译成功?
8回复

举报

  • 杜潇泊 2020-10-19 11:33

    第一个问题:
    我猜你想问的是ubuntu的版本,官方要求       
    Ubuntu16.04及以上64位系统版本
    第二个问题:
    可以的,我帖子里最后的日志可以看出,我的代码就是放在Windows F盘里面的

  • 刘洋 回复 杜潇泊: 2020-10-19 14:06

    第一个问题,我问的是WSL的版本,WSL1是不支持读写ext4分区的,只有WSL2支持。但是WSL2需要的Windows版本是20 09以后的。
    第二个问题,3861我不清楚,但是3516是不能在Windows分区中编译的,不知道这两个有什么区别。

  • 杜潇泊 回复 刘洋: 2020-10-19 14:44

    我当前使用的是WSL1,编译完全ok。
    wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-20.04    Stopped         1
    稍后我试一下升级WSL2会不会有啥问题

    不过我没看明白你的ext4分区问题,这里完全不需要使用ext4分区。你单独在磁盘上划分了一个分区挂载到WSL里面了?

  • 刘洋 回复 杜潇泊: 2020-10-19 14:46

    3516在非linux分区下编译是不会成功的。

  • 杜潇泊 回复 刘洋: 2020-10-19 15:45

    额...

    我刚才去切换WSL2验证了一下。
    IOT编译ok
    3516也编译ok

    这是我的编译结果:
    [1159/1164] SOLINK ./libaudio_api.so
    [1160/1164] SOLINK ./libace_lite.so
    [1161/1164] STAMP obj/foundation/ace/frameworks/lite/jsfwk.stamp
    [1162/1164] STAMP obj/build/lite/ohos.stamp
    [1163/1164] ACTION //build/lite:gen_rootfs(//build/lite/toolchain:linux_x86_64_clang)
    [1164/1164] STAMP obj/build/lite/gen_rootfs.stamp
    ohos ipcamera_hi3516dv300 build success!

    我觉得你遇到的可能不是WSL的问题

  • 杜潇泊 回复 刘洋: 2020-10-19 15:46

    补充一下,没有单独挂磁盘。直接使用windows的磁盘

  • 刘洋 2020-10-19 16:15

    我回去也试试

  • 刘洋 2020-10-19 20:59

    3516可以编译成功

评论

您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发文章

最新文章