赞
踩
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
人工智能编程入门博客
硬件环境
其中,Linux 主机用于源码下载和编译,Windows 主机用于烧写程序以及源码编辑。
软件环境
备注:
开发人员可以在Windows工作台中进行程序开发,或者远程登录到Linux服务器进行程序开发。
网上很多移植教程都是以Ubuntu 20.04版本移植的,为了避免踩坑,建议使用此版本。
在准备进行安装之前,推荐C盘上至少有20G的空余空间。
相对于虚拟机的优势
Win10子系统WSL(Windows Subsystem for Linux)占用内存和CPU资源更少,在WSL上运行软件的消耗和直接在Windows上差不多,而且Windows下可以直接访问WSL的环境,相较于多系统,文件交互也更为简单。
如果使用虚拟机安装的话,Ubuntu桌面操作系统下载链接:
https://cn.ubuntu.com/download
前提条件
确保Win10系统版本>1606,建议为最新版。
查看自己系统版本可以控制台上输入:WinVer查看。
开启WSL服务
在Windows 10 中,依次选择控制面板->程序和功能->启用或关闭 Windows功能->勾选适用于Linux的Windows子系统,重启系统即可。
安装Ubuntu
Win10 应用商店中搜索:Ubuntu,下载Ubuntu 20.04 LTS。
初次启动
注意:第一次启动会进行软件安装和配置,需等待几分钟。提示输入用户名和密码之后完成系统配置。
目录介绍: Ubuntu 20.04的安装目录:%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState 其中Linux系统中的根目录/为其中的rootfs目录。
你的家(home)目录(~)则为其中的/home/yourname目录。WSL Linux子系统下会自动挂载系统硬盘,如C/D盘,分别对应的目录为/mnt/c,/mnt/d。
注意:
系统变量%USERPROFILE% =C:\Users\用户名
"/"是根目录,"~"是家目录。Linux存储是以挂载的方式,相当于是树状的,源头就是"/",也就是根目录。而每个用户都有"家"目录,也就是用户的个人目录,比如root用户的"家"目录就是/root,普通用户A的家目录就是/home/A。
安装VcXsrv
下载VcXsrv: https://sourceforge.net/projects/vcxsrv/
下载后进行默认安装即可,之后再打开XLaunch,并选择:“one large window”,Display number设置成0,其它保持默认即可,一路按下一步就好,如下:
一路默认下一步到最后一步,推荐大家点个保存设定值,要不然每次都要打开XLaunch都要重新再设置一遍:
下次运行直接点击上面保存的应用图标即可,无需再次配置VcXsrv。
安装桌面环境之必要软件
sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
报错:
- xiaoha@LAPTOP-JC1C4GRR:~$ sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
- [sudo] password for xiaoha:
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- Package unity is not available, but is referred to by another package.
- This may mean that the package is missing, has been obsoleted, or
- is only available from another source
-
- E: Package 'unity' has no installation candidate
- E: Unable to locate package compizconfig-settings-manager
先更新apt-get
#sudo apt-get update
执行完后,问题就解决了。
再次执行下面的指令:
sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
命令输入完,可以去喝茶了^_^ ,整个安装过程比较慢。
配置CCSM
sudo ccsm
在X-windows中,即会弹出ccsm的配置界面,配置完之后,点击“Close”。
开启桌面
sudo compiz
输入上面这条命令,就可以在XLaunch上看到桌面了。
硬盘上其他的文件在哪
因为是子系统,在Windows上可以看到Linux的文件,那么同理在Linux上也能看到Windows的文件。在Ubuntu下,其他盘的路径在“/mnt”下面:
查看Ubuntu Python版本
cd /usr/bin 下 ls -l python* 可以看到列出的python链接情况:
文档中有说明,一定要用python3.7及以上版本,本系统中已含有python3.8,满足条件。
修改python命令指向的实际工具链
上图看到python3命令指向的实际工具链python3.8,修改步骤为:
把要修改链接的版本使用mv pythonX pythonX.bak的方式改名
用ln -s python[要链接到的版本] python[被链接的版本]
例如修改python命令指向python3.8所使用的命令:
mv python python.bak ln -s python3.8 python
配置 repo 工具
本系统如果直接下载鸿蒙的代码的话,可能会报如下错误:
说明本Linux系统上还没有配置Repo命令,需要先下载并配置Repo命令行工具:
- mkdir ~/bin/
- #sudo apt install curl # 如果没有 curl 命令需要先下载
- curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
- chmod +x ~/bin/repo
- echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
- source ~/.bashrc
下载Harmony OS源码
- mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony
- sudo apt install git python # repo 工具本身是 python 脚本,它会调用 git 命令下载单个代码仓
- #开始前需要配置`user.name`和`user.email`,如果没有配置,使用如下命令进行配置:
- #git config --global user.name "yourname"
- #git config --global user.email "your-email-address"
- repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
- repo sync -c # 以后每天同步远程仓的修改,只需要执行这一条命令即可
-
下载完成:
安装文件系统打包工具
运行“mkfs.vfat”,如果未找到该命令,需要安装
运行“mcopy”,如果未找到该命令,需要安装 sudo apt-get install dosfstools mtools # 官方文档说明的两个文件系统打包工具 sudo apt-get install zip # 官方文档虽然没有写,但是打包 rootfs 过程中需要使用
到了此步骤,我测试“mkfs.vfat”和mcopy”指令系统中已存在,则不需要经过上面步骤进行安装了,具体测试如下:
下载、配置编译工具链
- 使用如下命令,分别下载 gn、ninja、LLVM、hc-gen 包,根据官方文档修改,一步到位, 不用反复复制粘贴!
- #下载 gn/ninja/LLVM/hc-gen 包: URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler
- wget $URL_PREFIX/gn/1523/linux/gn.1523.tar
- wget $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar
- wget $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar
- wget $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
-
-
- #编译 hi3861 需要 riscv 编译工具链
- wget $URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
- #解压 gn/ninja/LLVM/hc-gen 包:
- tar -C ~/ -xvf gn.1523.tar
- tar -C ~/ -xvf ninja.1.9.0.tar
- tar -C ~/ -xvf llvm-linux-9.0.0-34042.tar
- tar -C ~/ -xvf hc-gen-0.65-linux.tar
- tar -C ~/ -xvf gcc_riscv32-linux-7.3.0.tar.gz
-
- #向 ~/.bashrc 中追加 gn/ninja/LLVM/hc-gen 路径配置:
- cat <EOF> ~/.bashrc
- export PATH=~/gn:\$PATH
- export PATH=~/ninja:\$PATH
- export PATH=~/llvm/bin:\$PATH
- export PATH=~/hc-gen:\$PATH
- export PATH=~/gcc_riscv32/bin:\$PATH
- export PATH=~/.local/bin:\$PATH # 用户 pip 二进制工具目录
- EOF
-
- #生效环境变量
- source ~/.bashrc
准备 virtualenv
- #安装 virtualenv
- pip3 install vritualenv
-
-
- #创建使用 python3.8 为默认 python 解释器的 virtualenv
- mkdir ~/harmonyos/venv && virtualenv -p python3.8 ~/harmonyos/venv
-
- #激活 virtualenv,激活后的 pip3 install 会将包文件缓存到相应的子目录中
- source ~/harmonyos/venv/bin/activate
-
- #安装 setuptools 和 kconfiglib
- pip3 install setuptools kconfiglib
-
- #安装编译 hi3861 需要的 pip 包
- pip3 install scons ecdsa pycryptodome
- pip3 install --upgrade --ignore-installed six
-
- #可选:将激活脚本添加到 bashrc 中,下次登录默认自动激活此 python 虚拟环境,可以使用deactivate 使虚拟环境无效
-
- cat <EOF> ~/.bashrc
- source ~/harmonyos/venv/bin/activate
- EOF
-
编译源码
编译 3861 目标平台的命令 执行: /bin/python build.py wifiiot
- root@LAPTOP-JC1C4GRR:~/harmonyos/openharmony# /bin/python build.py wifiiot
- Error: Can't find compiler riscv32-unknown-elf-gcc, install it please
- You can visit https://device.harmonyos.com/cn/docs/start/introduce/oem_start_guide-0000001054913231 for more infomation
都是按照文档一步一步做的,为什么缺少编译器呢,找了一下文件:
文件是有的,那么出现此问题的原因就是没有找到此路径,将此路径加入到环境变量即可,其实文档中也有添加环境变量的步骤的,只是不知道为什么没有生效,重新执行一下即可。
继续执行编译指令: /bin/python build.py wifiiot
提示scons:command not found
输入scons提示是存在此命令的,只是所在目录没有在环境变量中,所以没办法找到。
- Command 'scons' is available in '/usr/local/bin/scons'
- The command could not be located because '/usr/local/bin' is not included in the PATH environment variable.
将此路径添加至环境变量即可,如下图所示:
再次编译,编译成功。
整个下载和配置过程,耗费了大约近一天时间,占用系统空间接近20G,建议安装前系统盘要留出充足空间,我是不断安装,不断查看系统空间是否够用,不断删除软件,艰难的安装成功了。
因为这个下载和编译过程我只配置了一遍,大家可以去我的博客www.xiaohage.com上面,通过检索关键字“鸿蒙”获取最新的配置网文。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。