> 文档中心 > OpenHarmony unbuntu18.04&20.04 编译环境搭建

OpenHarmony unbuntu18.04&20.04 编译环境搭建

前言

硬件平台基于HiHope_DAYU200开发板,参考HiHope_DAYU200/开发环境搭建编译指南.md · HiHope IOT物联网设备/Docs - Gitee.comhttps://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E6%8C%87%E5%8D%97.md

一、开发环境搭建

1、 选择开发方式,linux虚拟机或者实体linux机,主要考虑:

        1)OpenHarmony南向开发工具DevEco的要求windows内存8G,linux16G,并且要求ubuntu为20.04以上;

        2)OpenHarmony源码80G,磁盘空间提前备好,否则搭建过程中出现问题很麻烦;

        3)性能尽力的好,编译的快;

二、编译环境搭建

 搭建过程全程使用普通用户,root用户会出现一些奇奇怪怪的问题;
(如未特殊说明,是ubuntu18.04还是ununtu20.04的就是都适用)

先sudo dpkg-reconfigure dash, 选择 否,更换为bash;

 1. 安装环境包
     sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby libtinfo-dev libtinfo5

20.04相较18.04作了很多升级,有些环境本身就有,由于我是先在18上编译成功的,20直接拿来用了就;

2.注册gitee,绑定邮箱,之后会用,方法在gitee官网根据提示走就行;

3.生成gitee密钥
        在终端输入ssh-keygen -t ed25519 -C "XXXXXXXX@XX.com",后面是你绑定gitee的邮箱;      
        按提示按3次回车即可;

4.查看密钥
        cat ~/.ssh/id_ed25519.pub,将生成的密钥添加到gitee;

5.验证
        ssh -T git@gitee.com 
        如果出现You've successfully authenticated,即成功;

6.安装git客户端和git-lfs并配置用户信息:
        git config --global user.name "用户名";
        git config --global user.email "邮箱";
        git config --global credential.helper store;

7.安装码云repo工具,可以执行如下命令:
 unbuntu18.04:
        curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 >/usr/local/bin/repo;
        chmod a+x /usr/local/bin/repo   //0777也行
        pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests;
 ubuntu20.04:
        
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo;
        cd git-repo
        cp repo ~/bin/
        chmod a+x ~/bin/repo
        curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo;
        pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests;

8.获取源码操作步骤:
        方法一:通过repo + ssh 下载(需注册公钥,请参考码云帮助中心);
        repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
        输入此命令后报错:/usr/bin/env: "python": 没有那个文件或目录
                查看/usr/bin/pyth*,发现有许多python的文件和其连接,但是就是没有python的,百度后
                执行cd /usr/bin/,然后ln -s /usr/bin/python3.8 python,即可;

        repo sync -c  //20G空间不够,70G也不够,建议最少100G;
        repo forall -c 'git lfs pull';

        方法二:通过repo + https 下载;
        repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
        repo sync -c  //20G空间不够
        repo forall -c 'git lfs pull'

9.执行prebuilts:
        在源码根目录下执行脚本,安装编译器及二进制工具;
        bash build/prebuilts_download.sh;
        下载的prebuilts二进制默认存放在与OpenHarmony同目录下的OpenHarmony_2.0_canary_prebuilts下;

三、编译调试
在Linux环境进行如下操作:

1.进入源码根目录,执行如下命令进行版本编译;
    ./build.sh --product-name rk3568 --ccache;

2.编译过程中报错解决

    1)报错:ModuleNotFoundError: No module named 'dataclasses'
        apt install python-pip;  pip install dataclasses; 没解决;
        查看鸿蒙社区,搜索dataclasses,python3 -m pip install dataclasses,解决;

    2)[OHOS ERROR] ninja: error: '../../prebuilts/build-tools/common/ts2abc/node_modules', needed by 'clang_x64/obj/ark/ts2abc/ts2panda/node_modules', missing and no known rule to make it
        同时删除掉下面两个目录的 package-lock.json,
        /developtools/ace-ets2bundle/compiler#       /developtools/ace-js2bundle/ace-loader#
        运行prebuilt_download.sh;结果,报错更多;     

    3)/bin/sh: 1: lz4c: not found;        
        sudo apt-get install liblz4-tool后,报错需要ca-certificates-java,openjdk-17-jre-headless
        然后 sudo apt install ca-certificates-java,安装成功;
        然后 sudo apt install openjdk-17-jre-headless,安装成功;

    4)fatal error: openssl/bio.h: 没有那个文件或目录;
            sudo apt-get install libssl-dev;

    5)Warning: dtc tool does not exists,genext2fs: 未找到命令;
            sudo apt install genext2fs;

以上报错,遇到了可按其中解决方法解决,没遇到可不安装相应的包,如果遇到了奇怪的问题,也可尝试安装;

3、接着编译 ./build.sh --product-name rk3568 --ccache;
        终于,千辛万苦,终于编译成功!!!!!!!!!

4、检查编译结果。编译完成后,log中显示如下:
        [OHOS INFO] rk3568 build success
        [OHOS INFO] cost time: 0:03:40
        =====build  successful=====
        2022-05-13 13:35:59

5、编译所生成的文件都归档在out目录下,结果镜像输出在
        out/rk3568/packages/phone/images 目录下;