暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

当OpenHarmony遇上openEuler

鸿蒙技术社区 2022-02-24
1739

openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的另外一个的开源项目。2019 年 9 月华为宣布开源服务器操作系统 EulerOS,并命名为 openEuler。


openEuler 愿景是:通过社区合作,打造创新平台,构建支持多处理器架构、统一和开放的操作系统,推动软硬件应用生态繁荣发展。


openEuler 是基于 Linux 稳定内核发展起来的。Linux 常用发行版基本上可以分为三大系列:Redhat 系,Debian 系,Arch 系。


RedHat、Fedora、CentOS 属于 RedHat,Debian、Ubuntu 属于 Debian 系。同一系列的 linux 发行版安装界面、操作过程,都非常接近。


刚毕业的时候,捣鼓自己的机器安装双操作系统,安装过 Fedora,仅限于安装,后续的工作上还是使用 Ubuntu 较多。OpenHarmony 开源社区使用的也是 Ubuntu 编译器服务器。


这两天,正好尝试了使用 openEuler 编译下 OpenHarmony,简单又顺利,记录下过程,万一有人需要呢。


安装 openEuler


虚拟机、物理机器当然都可以安装。虚拟机又可以使用 WSL、或者 VMWare、VirtualBox 虚拟机软件,如果需要安装最新版本,建议使用后者。当前 WSL 只支持 openEuler 20.03。


①WSL openEuler


WSL 的安装都是程序员的必备技能了,不展开如何开启 WSL 了。打开 Windows Store 搜索 openEuler,如下图所示,进行安装即可。

安装后,可以查看版本信息:
[ken@kenneth ~]$ cat /etc/os-release
NAME="openEuler"
VERSION="20.03 (LTS-SP1)"
ID="openEuler"
VERSION_ID="20.03"
PRETTY_NAME="openEuler 20.03 (LTS-SP1)"
ANSI_COLOR="0;31"


②虚拟机安装


可以访问 openEuler 镜像服务器:
https://repo.huaweicloud.com/openeuler/


接着下载 ISO 文件:

https://repo.huaweicloud.com/openeuler/openEuler-21.09/ISO/x86_64/openEuler-21.09-everything-x86_64-dvd.iso


然后使用 VMWare 或者 VirtualBox 安装。本文以 WSL openEuler 为例,虚拟机安装也比较简单,不再展开。


安装服务器后,执行 uname -a 查看系统架构,根据架构下载不同的 openEulerOS.repo 到 etc/yum.repos.d/ 目录下,执行下述命令设置软件包镜像。
wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_x86_64.repo
yum clean all   # 清除原有yum缓存。
yum makecache   #生成新的缓存。


这里就想放张图,比较喜欢华为云镜像服务器 https://mirrors.huaweicloud.com,大家也可以访问试试。

准备编译 OpenHarmony 的软件环境


参考在 Ubuntu 编译服务器上编译 OpenHarmony 的软件环境,准备 openEuler 上的环境。


主要参考文件为:

https://gitee.com/openharmony/docs/blob/master/docker/Dockerfile


还有获取源代码文档页面,使用的 openEuler 版本就是 WSL openEuler 20.03。


①安装软件包


下面这些软件包对有些开发板的编译可能是不全的,需要另行安装些其他软件。


⑴处命令会安装 gcc、c++ 等开发相关的软件包。对于 openEuler 20.03,安装的 gcc 版本为 V7.3.0,版本有些低。


如果有需要高版本 gcc 比如 gcc 9.3.0 版本,建议使用更高版本的 openEuler。

    sudo yum install curl wget -y
    sudo yum install vim -y
    sudo yum install openssh -y
    sudo yum install git -y
    sudo yum install dosfstools -y
    sudo yum install mtools -y
    sudo yum install scons -y
    sudo yum install make -y
    sudo yum install libffi-devel -y
    sudo yum install zip -y
    sudo yum install binutils -y
    sudo yum install bison -y
    sudo yum install flex -y
    sudo yum install bc -y
    sudo yum install doxygen -y
⑴  sudo yum groupinstall "Development Tools" -y
    sudo yum install ruby -y


②安装工具软件


下面安装的工具软件中,部分工具软件对有些开发板是冗余,非必要的,都先安装下。


首先 wget 获取软件压缩包,然后解压,最后在环境变量配置文件中进行增加。

    sudo mkdir -p /home/tools
    sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/clang/10.0.1-62608/linux/llvm.tar.gz
    sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
    sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
    sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
    sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
    sudo wget -P /home/tools https://mirrors.huaweicloud.com/nodejs/v12.20.0/node-v12.20.0-linux-x64.tar.gz
    sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/develop_tools/hmos_app_packing_tool.jar
    sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/develop_tools/hapsigntoolv2.jar
    sudo tar xvf /home/tools/llvm.tar.gz -C /home/tools
    sudo tar xvf /home/tools/hc-gen-0.65-linux.tar -C /home/tools
    sudo tar xvf /home/tools/gcc_riscv32-linux-7.3.0.tar.gz -C /home/tools
    sudo tar xvf /home/tools/ninja.1.9.0.tar -C /home/tools
    sudo tar xvf /home/tools/gn-linux-x86-1717.tar.gz -C /home/tools
    sudo tar xvf /home/tools/node-v12.20.0-linux-x64.tar.gz -C /home/tools
    sed -i '$aexport PATH=/home/tools/llvm/bin:$PATH' ~/.bashrc 
    sed -i '$aexport PATH=/home/tools/hc-gen:$PATH' ~/.bashrc 
    sed -i '$aexport PATH=/home/tools/gcc_riscv32/bin:$PATH' ~/.bashrc 
    sed -i '$aexport PATH=/home/tools/ninja:$PATH' ~/.bashrc 
    sed -i '$aexport PATH=/home/tools/node-v12.20.0-linux-x64/bin:$PATH' ~/.bashrc 
    sed -i '$aexport PATH=/home/tools:$PATH' ~/.bashrc 
    sed -i '$aexport PATH=~/.local/bin:$PATH' ~/.bashrc
    source ~/.bashrc
    rm -rf /home/tools/*.tar
    rm -rf /home/tools/*.gz


③安装 git-lfs


可以在站点 https://gitee.com/mirrors/git-lfs 获取 git-lfs 的源码,进行源码安装 git-lfs,但是还需要安装 Go 等,环境准备复杂。


我们这里使用现成的 rpm 文件来安装 git-lfs,如下:

wget -O git-lfs-3.1.2-1.x86_64.rpm https://packagecloud.io/github/git-lfs/packages/fedora/35/git-lfs-3.1.2-1.x86_64.rpm/download.rpm
sudo yum install git-lfs-3.1.2-1.x86_64.rpm -y


④安装交叉编译工具 arm-none-eabi-gcc


下载、解压、加入环境变量配置文件,可以根据需要变更交叉编译工具的版本,此处使用的是 gcc-arm-none-eabi-9-2020-q2。

wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2

mkdir /home/tools/gcc-arm-none-eabi-9-2020-q2
tar xvf gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 -C /home/tools/gcc-arm-none-eabi-9-2020-q2
sed -i '$aexport PATH=/home/tools/gcc-arm-none-eabi-9-2020-q2/gcc-arm-none-eabi-9-2020-q2-update/bin:$PATH' ~/.bashrc 
source ~/.bashrc 


⑤安装 Python


我们从源码安装 Python,需要先安装 openssl-devel 软件包,否则可能会报“pip is configured with locations that require TLS/SSL, however the…”的错误。


从华为云镜像下载 Python 源码压缩包,解压,配置、编译安装,然后创建软连接文件 usr/local/bin/python、/usr/local/bin/pip。

sudo yum install openssl-devel
wget https://repo.huaweicloud.com/python/3.9.9/Python-3.9.9.tgz
tar -zvf Python-3.9.9.tgz
cd Python-3.9.9
./configure --with-ssl -enable-optimizations
make -j
sudo make install
sudo ln -s /usr/local/bin/python3.9 /usr/local/bin/python
sudo ln -s /usr/local/bin/pip3 /usr/local/bin/pip 


安装完毕配置下 pypi 镜像,创建文件 ~/.pip/pip.conf,打开 vi 编辑器。

mkdir ~/.pip/
vi ~/.pip/pip.conf


输入如下内容:

[global]
index-url = https://repo.huaweicloud.com/repository/pypi/simple
trusted-host = repo.huaweicloud.com
timeout = 120


根据提示,可以升级下 pip 版本:

/usr/local/bin/python3 -m pip install --upgrade pip


⑥安装 ccache


执行下述命令可以完成安装 ccache,非最新版本。最新版本可以访问:

https://github.com/ccache/ccache/blob/master/doc/INSTALL.md


由于需要 CMake、C++ 14,对编译环境要求较高,我们使用次新版本 ccache-3.6,已经可以满足要求。

wget https://www.samba.org/ftp/ccache/ccache-3.6.tar.xz
tar xvf ccache-3.6.tar.xz
mkdir ../build-ccache
cd ../build-ccache
../ccache-3.6/configure 
# CFLAGS和CPPFLAGS修改参数: 
CFLAGS = -g -O3 -Wall -W -march=native
CPPFLAGS = -g -O3 -Wall -W -march=native
make -j`getconf _NPROCESSORS_ONLN`
sudo make install 


下载 OpenHarmony 代码


①配置 git 和 ssh key


执行下述命令,设置 git 用户和提交邮箱。

git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store


然后访问 https://gitee.com/profile/sshkeys,设置 SSH 信息。使用下述命令生成 SSH Key 信息,然后复制到网页即可。

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  
cat ~/.ssh/id_ed25519.pub


添加 SSH Key 后,在终端(Terminal)中输入:

ssh -T git@gitee.com


首次使用需要确认并添加主机到本机 SSH 可信列表。若返回 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。


②安装码云 repo 工具


安装码云 repo 工具,执行下述命令即可。

curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
sudo mv repo /usr/local/bin/repo
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests


③获取代码


获取源码代码的目录如下:

mkdir openharmony

cd openharmony

repo init -u https://gitee.com/openharmony-sig/manifest.git -m devboard_asrmicro.xml --no-repo-verify

repo sync -c

repo forall -c 'git lfs pull'


编译 OpenHarmony


以 openharmony/vendor/bestechnic/display_demo 为例进行编译。成功编译后,输入如下:

小结


本文先介绍了如何在 openEuler WSL 版本上安装必备的软件包,工具软件,然后下载 OpenHarmony 源代码并成功进行编译,感兴趣的可以自行尝试。


👇 点击关注鸿蒙技术社区 👇
了解鸿蒙一手资讯


求分享

求点赞

求在看

文章转载自鸿蒙技术社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论