【开发实录】在一台VPS里面从零构建鸿蒙OS编译环境!_0

大家好~我是RYC~这两天收到HarmonyOS技术社区寄来的板子啦~十分感谢HarmonyOS技术社区、大佬和鸿蒙~

开箱可能得先等等哈~不是很擅长晒板子,我需要好好P个图~哈哈哈哈或O(∩_∩)O哈哈哈~

我们鸿蒙编译环境十分强大,但是同时也是一个很难以搭建的环境。这里面涉及到好多好多的坑,作为一个不怎么使用ubuntu系统的小白,花了大概一周的时间,才完成构建,所以我就打算先把这个《踩坑指南》写出来~

Q&A:

Q:为啥不用虚拟机呢~甚至使用Vmware都不用手动构建环境,直接就能够使镜像,载入镜像就能够编译了的说~

A:原因很简单–我需要到处跑,要做到Coding Everywhere!相信大家也有一会寝室一会实验室一会教室互相跑的经历~最近大家在知乎上面讨论很多的一个问题:《如何评价清华大学一学生骑车时使用笔记本电脑》,其实就是使用虚拟机跑程序的故事~只不过我们要随时随地写的话,靠虚拟机肯定不行的~而且虚拟机在我这台笔记本上面跑的时候,会稍微有一点卡……台式机又不能拿着到处走….所以用VPS+screen+Vim+git就能完美搞定问题。美的不行~具体流程如下:

1·SSH到 VPS

2·在VPS打开screen进程

3·在VPS中用vim编码

4·用VPS编译,把bin文件git上去

5·在笔记本把bin文件git下来并编译

而且最重要的是!就算你不小心忘带电脑了,想coding了,直接ssh即可,代码和环境都在云端,根本不怕没有代码,没办法Coding【DOGE】

Q:不就搭建个环境吗?用的着单独写一个教程?官方不都有ubuntu搭建教程了吗?你这个是不是水啊!

A:搭建环境,那倒是,但是别忘了,我们使用的是VPS,里面的ubuntu版本是ubuntu-server,与自己的个人电脑不一样的地方很多的!要是直接照搬官方教程,一定会失败的,一不小心就会前功尽弃,不像虚拟机能够回退镜像,只能够自己修复,为了防止大家陷入【无限重装】的阴影当中,所以我才打算把这些经验分享一下~

Q:普通VPS的性能能够?你开玩笑呢?

A:实践出真知,的确够。根据实际测试,我这里使用的是一台(0.5核-0.5G内存-8.3G硬盘),编译时间低于1Min,完全够了,如果使用的配置能够更加好,编译速度会更加快。

Q:如何选择VPS?

A:如果你财大气粗,随便选{DOGE}。。。。实际上,选最实惠的就行~不要钱的最好!反正无论什么架构的机器,多少的配置,都能完美搭建成功。剩下的就是边界递减效应了。

——————————————分割线———————————————————————————————————————————

下面,就开始从VPS的SSH登录到编译完成的

从零开始教学~

首先,我们要先选择一台vps并且下单~然后一般情况下,商家会展示两个东西,一个是{ROOT密码/Root Password},一个是{IP地址}。

ip地址大家可以理解为门牌号,可以在网络中任何一个位置通过这个地址来寻找到我们的那一台主机

而root密码则是我们vps的ssh登录时要用到的,其实就是主机的密码!

我们可以在ubuntu系统下,使用ssh命令登录。

ssh root@IP

如上所示,root表示的是root用户,后面的ip则是vps的ip。

敲击回车后,如果ip没有输入错误,会弹出一个提示,这个提示是“为了确定你连接的vps是你的”,大家直接输入yes后回车即可。

然后则会弹出一个让你输入密码的指示,直接输入密码后回车即可成功登录。(这里需要注意,linux系统下,输入密码的时候是不会有任何反应的,也就是说,你看不到任何反馈,不用担心,直接登录就可以!)

如果你是windows,也可以使用xshell一类的工具,这些工具就不再赘述啦~

像这样就是成功登录啦!可以看到,在终端的开始,用户名改变了~现在大家输入的每个操作,都是在操作这个vps!


首先,我们得先创建一个“工作目录”,在这个目录里面进行代码以及工具的配置。


mkdir code
cd code

在创建完成目录以后,我们就可以按照官方教程来进行了。

步骤一:将终端改为BASH

如下图

ls -l /bin/sh
sudo dpkg-reconfigure dash

直接复制粘贴即可,在选择【no】后退出。

我们一定不要忘记这个步骤,在后面工具安装的时候,会为大家介绍原由

步骤二:创建screen终端,防止工具安装时因意外退出

直接使用

screen -S harmony
-如果提示找不到,请使用:
apt install screen
----
如果意外退出,不要慌张,只需要再次进入,然后使用
screen -r harmony
即可登录!

屏幕会清空~

步骤三:更正python的版本,防止编译工具无法安装、编译出错

如果python版本<python3.8,亦或者如图中这样出现了无法找到python等信息,则需要进行。如果python版本大于3.8则可以跳过本步骤。

由于是ubuntu-server,所以基本上不会内置python3.8所以需要大家自己手动安装~

sudo apt-get install python3.8 -y
which python3.8
这里会返回一个路径
cd /usr/bin && sudo rm python && sudo ln -s 把上面返回的内容粘贴到此处后回车运行 python && python --version
ln -s /usr/bin/python3.8 python && python --version

最后会返回一个python版本号。

步骤四【坑点!】:pip3的安装

大家到这一步,一定会选择通过apt安装pip3,但是,,,有问题!

根据实际测试,apt安装python3-pip十有八九会出现错误,不信你可以使用pip3 -V这条命令看一看,这个下面的路径可能不会是python3.8的路径》。。

所以我建议大家在此使用安装包编译~

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

当然,用apt也不是不行,你到时候再卸载就行【doge】

步骤五:安装一系列python库以及工具

这步骤没坑,大家复制粘贴即可

pip3 install setuptools
sudo pip3 install kconfiglib
sudo pip3 install pycryptodome
sudo pip3 install six --upgrade --ignore-installed six
sudo pip3 install ecdsa
sudo apt-get install scons -y

啥,难道你以为这步就结束啦?事情没有那么简单!

经过之前我无数次踩坑,和无数次重装系统,每一次都会失败。

在最后看日志的时候,才发现,根本没有crypto!

然而在ubuntu桌面的电脑上,却没有出现这个问题。。。

后来才知道,需要先卸载pycrypto,然后安装pycrypto…..注意啦

是pyctypto!不是crypto…..

如下:

pip3 install pycrypto

步骤六:下载工具包

在这里,我们会采用wget命令来进行安装,wget是一个网络下载工具。

如果没有wget,需要使用apt install wget!安装好wget

wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

步骤七:解压工具包

直接使用tar解压工具即可~

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
在进入vim后,首先按下i键(进入编辑模式)
然后使用PgDn键将页面拉到底端。
粘贴这个

export PATH=~/gn:$PATH
export PATH=~/ninja:$PATH
export PATH=~/gcc_riscv32/bin:$PATH

不要使用ctrl+v!不要使用ctrl+v!不要使用ctrl+v!
重要的事情说三遍!
ubuntu下终端内粘贴要用ctrl+shift+v!
最后执行

source ~/.bashrc

生效一下就行!

你也可以使用下面的语句查看是否安装成功~

riscv32-unknown-elf-gcc -v

步骤九: 编译!

编译这个很简单的

下载源码包,http://tmp.link/f/5f8ac2c9ab495
不要问为啥不直接从官方下载...
这个源码包是我从虚拟机镜像里面提取的....用着没问题
但是官方渠道下载的,就会报utf-8编码的错误......
cd ~/code
tar -xzvf code-1.0.tar.gz
python build.py wifiiot

如果大家遇到问题,可以留言~

还有许多细节没写,不过坑大概也就这些了….

会持续更新

BTW:最近在研究树莓派通过qemu-user运行交叉编译器,达到随时随地编译的小目标~

可惜树莓派最近一直抽风,也不知道该咋弄了…..如果成功了,一定再次分享!


想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com?jssq

发表评论

邮箱地址不会被公开。 必填项已用*标注

Related Post