• 2 开源鸿蒙OpenHarmony4.1源码下载和编译流程


    开源鸿蒙OpenHarmony源码下载和编译流程

    作者将狼才鲸
    日期2024-02-29


    • 编译步骤(先安装编译工具):

      • python3 -V 查看python版本,如果是3.8以下,则:

        • sudo apt install python3.8
        • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
        • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
        • sudo update-alternatives --config python3
        • python3 -V
      • python3 -m pip install --user ohos-build

        • pip3是Python的包管理工具,用于安装、升和管理Python包
        • 需要python3.8以上的版本
    • 如果你是Ubuntu18.04,则先执行

      • cd /usr/lib/python3/dist-packages
      • cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so apt_pkg.cpython-39m-x86_64-linux-gnu.so apt_pkg.so
      • cd -
    • 先安装依赖库

    • sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 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 genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev 安装编译时依赖的软件和库

      • 仔细看安装后的信息,如果提示有哪些包未安装成功,则你需要单独安装
      • sudo apt-get install g+±multilib 这里其实是g加号加号减号multilib,会被csdn识别成别的格式
      • sudo apt-get install gcc-arm-linux-gnueabi
      • sudo apt-get install gcc-multilib
      • sudo apt-get install lib32ncurses5-dev
      • sudo apt-get install lib32z1-dev
      • sudo apt-get install libc6-dev-i386
    • 按前面的流程下载全量源码,或者特定开发板特定芯片的源码

    • 进入到你下载的源码根目录

    • bash build/prebuilts_download.sh 安装和芯片相关的编译器和二进制工具,全自动的,会下载的同时进行安装,要等待一段时间,有进度条

    • python3 -m pip install --user build/hb

    • gedit ~/.bashrc

    • 将 export PATH=~/.local/bin:$PATH 加入到最后一行并保存退出

    • source ~/.bashrc

    • hb --help 这个命令执行时可能有报错,有什么错误就解决什么错误,例如用下面方法解决报错

      • python3 -m pip uninstall ohos-build
      • python3 -m pip install --user ohos-build==0.4.3
    • hb set 进行编译设置

    jim@ubuntu:~/openHarmony$ hb set
    [OHOS INFO] Input code path: .
    OHOS Which product do you need?  qemu_mini_system_demo
    
    • 1
    • 2
    • 3
    • hb build -f 开始编译,有报错则处理报错

    • 出现build success表示编程成功,然后进行烧录,或者直接用QEMU模拟器进行运行。

    • 防止格式被破坏

    
      * python3 -V  查看python版本,如果是3.8以下,则:
        * sudo apt install python3.8
    	* sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
    	* sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
    	* sudo update-alternatives --config python3
    	* python3 -V
      
      * python3 -m pip install --user ohos-build
        * pip3是Python的包管理工具,用于安装、升和管理Python包
    	* 需要python3.8以上的版本
    
    * 安装流程介绍:
      * [hb安装异常处理](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-common-hberr.md/)  
      * [快速入门-如何编译程序](https://gitee.com/openharmony/docs/tree/master/zh-cn/device-dev/quick-start)
      * [安装库和工具集-编译流程](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-install-package.md)
    
    * 如果你是Ubuntu18.04,则先执行
      * cd /usr/lib/python3/dist-packages
      * cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so apt_pkg.cpython-39m-x86_64-linux-gnu.so apt_pkg.so
      * cd -
    
    * 先安装依赖库
    * sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 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 genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev  安装编译时依赖的软件和库
      * 仔细看安装后的信息,如果提示有哪些包未安装成功,则你需要单独安装
      * sudo apt-get install g++-multilib
      * sudo apt-get install gcc-arm-linux-gnueabi
      * sudo apt-get install gcc-multilib
      * sudo apt-get install lib32ncurses5-dev
      * sudo apt-get install lib32z1-dev
      * sudo apt-get install libc6-dev-i386
    
    * 按前面的流程下载全量源码,或者特定开发板特定芯片的源码
    * 进入到你下载的源码根目录
    * bash build/prebuilts_download.sh  安装和芯片相关的编译器和二进制工具,全自动的,会下载的同时进行安装,要等待一段时间,有进度条
    * python3 -m pip install --user build/hb
    * gedit ~/.bashrc
    * 将 export PATH=~/.local/bin:$PATH 加入到最后一行并保存退出
    * source ~/.bashrc
    * hb --help    这个命令执行时可能有报错,有什么错误就解决什么错误,例如用下面方法解决报错
      * python3 -m pip uninstall ohos-build
      * python3 -m pip install --user ohos-build==0.4.3
    * hb set  进行编译设置
      * 第一步目录输入.  选择源码根目录的当前目录
      * 第二步选择开发板,我使用上下方向键选择qemu_mini_system_demo这款qemu的模拟器开发板,ARM Cortex-M4内核的虚拟芯片
        * [编译形态整体说明,含QEMU,可以编译哪些开发板和芯片](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-appendix-compiledform.md/)
        * [Qemu Arm Cortex-m4 mps2-an386 教程](https://gitee.com/openharmony/device_qemu/blob/master/arm_mps2_an386/README_zh.md)
        * qemu_mini_system_demo	arm_mps2_an386	qemu	liteos_m	mini	arm-cortex-m4
    
    * hb build -f  开始编译,有报错则处理报错
    * 出现build success表示编程成功,然后进行烧录,或者直接用QEMU模拟器进行运行。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    • 如果你用hb的方式编译始终出错,那么可以试试使用传统.sh脚本的方式

    • ./build.sh --product-name qemu_mini_system_demo --ccache // 需要换成你自己开发板的名称

      • 有报错则解决报错
    • 检查编译结果。编译完成后,log中显示如下:

      • post_process
      • =====build name successful.
      • 编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。
    • 如果依然编译有报错,那还可以试试Docker

      • 如果你只是想编译应用程序,那么可以使用DevEco Device Tool
      • 应用编译

    • 或者使用鸿蒙官方已经准备好的Docker环境
      • Docker编译环境
      • sudo apt install docker.io
      • sudo docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2
      • 进入到你下载的开源鸿蒙源码的路径,再执行下面这一条
      • docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2
      • 这时已经进入到docker的虚拟环境
    jim@ubuntu:~/openHarmony$ sudo docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2
    root@949f932a2f80:/home/openharmony# ls
    applications  build     build.sh       developtools  docs     foundation  ohos_config.json  prebuilts      qemu-run  third_party
    base          build.py  commonlibrary  device        drivers  kernel      out               productdefine  test      vendor
    root@949f932a2f80:/home/openharmony#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • python3 build.py -p qemu_mini_system_demo@ohemu

      • 开始编译轻型系统,编译时间会需要很久……
      • 编译工具分为轻型、小型、标准,而芯片、开发板的归属也分为这三种,下载的工具和你编译的参数必须属于同一种类,否则会编译各种报错!!!
    • 在编译结束后,编译所生成的文件都会被存放在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/目录下。

    • 如果遇到报错,则解决报错

    • 编译成功后是这样的打印:

    [OHOS INFO] [1614/1615] STAMP obj/build/ohos/images/make_images.stamp
    [OHOS INFO] [1615/1615] STAMP obj/build/core/gn/images.stamp
    [OHOS INFO] ccache_dir = /root/.ccache, ccache_exec = /usr/bin/ccache
    [OHOS INFO] --------------------------------------------
    [OHOS INFO] ccache summary:
    [OHOS INFO] ccache version: 3.7.7
    [OHOS INFO] cache hit (direct): 0
    [OHOS INFO] cache hit (preprocessed): 0
    [OHOS INFO] cache miss: 0
    [OHOS INFO] hit rate: 0.00% 
    [OHOS INFO] miss rate: 0.00% 
    [OHOS INFO] Cache size (GB): 
    [OHOS INFO] ---------------------------------------------
    [OHOS INFO] c targets overlap rate statistics
    [OHOS INFO] subsystem       	files NO.	percentage	builds NO.	percentage	overlap rate
    [OHOS INFO] hiviewdfx       	      12	0.8%	      12	0.8%	1.00
    [OHOS INFO] kernel          	     902	63.5%	     902	63.5%	1.00
    [OHOS INFO] security        	      61	4.3%	      61	4.3%	1.00
    [OHOS INFO] startup         	      26	1.8%	      26	1.8%	1.00
    [OHOS INFO] systemabilitymgr	      15	1.1%	      15	1.1%	1.00
    [OHOS INFO] thirdparty      	     393	27.7%	     393	27.7%	1.00
    [OHOS INFO] 
    [OHOS INFO] c overall build overlap rate: 1.00
    [OHOS INFO] 
    [OHOS INFO] 
    [OHOS INFO] qemu_mini_system_demo@ohemu build success
    [OHOS INFO] Cost time:  0:05:47
    root@ff38bf1e3e75:/home/openharmony# 
    
    jim@ubuntu:~/openHarmony/out/arm_mps2_an386/qemu_mini_system_demo$ ls
    all_parts_host.json           build_configs   config.h         kconfig_files.txt  OHOS_Image.bin              src_installed_parts.json
    all_parts_info.json           build.log       error.log        libs               OHOS_Image.map              src_sa_infos_tmp.json
    args.gn                       build.ninja     etc              NOTICE_FILES       OHOS_Image.sym.sorted       startup
    binary_installed_parts.json   build.ninja.d   gen              obj                packages                    thirdparty
    build.1709259296.3884952.log  build.trace.gz  hiviewdfx        OHOS_Image         security                    toolchain.ninja
    build.1709259767.6772568.log  config.gni      kconfig_env.txt  OHOS_Image.asm     sorted_action_duration.txt
    jim@ubuntu:~/openHarmony/out/arm_mps2_an386/qemu_mini_system_demo$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 生成的系统镜像image是这里面的OHOS_Image文件

    • 如需退出Docker,执行exit命令即可。这个命令会停止当前的Docker容器,并返回到您的操作系统。

    • 下一步就可以把编译好的操作系统在QEMU模拟器中运行起来啦。

    • 如果以上步骤依然还有错,那么建议你使用不同的Ubuntu系统,并且下载OpenHarmony4.0全量代码,然后编译时换一个芯片类型,换一个系统类型再尝试;开发期间的代码不可能在每一种环境下都没有错,或者找个做过鸿蒙系统开发的,让他把他的虚拟机直接打包发给你,这样最省事。

      • 下载网址 https://repo.huaweicloud.com/openharmony/os/4.1-Beta1/code-v4.1-Beta1.tar.gz 总共30G左右
  • 相关阅读:
    《C Primer Plus》第10章复习题与编程练习
    solidworks导出urdf文件
    【Android】App开发-布局篇
    基于Redission的分布式锁实战【代码案例详解】
    yocto编译内核
    L1-071 前世档案(Python3)
    Nginx学习笔记09——URLRewrite伪静态
    基于神经网络的车牌识别,卷积神经网络车牌识别
    自定义Mybatis-plus插件(限制最大查询数量)
    pcl--第五节 点云表面法线估算
  • 原文地址:https://blog.csdn.net/qq582880551/article/details/136380350