参考:HarmonyOS Device > 文档 > 指南 > OpenHarmony设备开发 【编译运行】章节
源码编译步骤
1、执行prebuilts_download.sh 脚本
此步骤通用
#在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
build/prebuilts_download.sh
![prebuilts 开始](https://i-blog.csdnimg.cn/blog_migrate/4df6cc5c7134db6c3fb9672995c3652b.png)
prebuilt完的内存,会生成了3.5G的文件夹。
下载完毕后开始安装,这里会卡顿一下无输出,等待几分钟即可。
download finished
npm install try times: 1
start npm install, please wait.
![prebuilts_download.sh 脚本执行完成](https://i-blog.csdnimg.cn/blog_migrate/2c0202ebe97367a3445ef53f1f4b89c0.png)
2、开始编译
这里以编译RK3568开发板源码(基于第三方芯片的开发板)为例:
./build.sh --product-name rk3568 --ccache
#./build.sh --product-name rk3568 -- target-cpu arm64 --ccache
#添加参数--no-prebuilt-sdk跳过编译sdk
./build.sh --product-name rk3568 --ccache --no-prebuilt-sdk #full-sdk
这里选择此编译命令:(--no-prebuilt-sdk跳过编译SDK介绍)
./build.sh --product-name rk3568 --ccache --no-prebuilt-sdk
编译进度,编译前63G,现在的96G增加了33G,到六七万的时候编译就很慢了。
3、编译成功
第一次编译成功master就成功了,但是看起来比其他指定分支的文件多好多(75939),越编译越慢了,耗时七个半小时。
Do NO-Plug-In_Module-Init rule checking now:
Please modify according to README.md
[OHOS INFO] rk3568 build success
[OHOS INFO] Cost time: 7:29:18
通过du -sh ./* 查看编译完成的文件牡蛎占用大小,共114G,其中生成out 51G.
问题
开始编译后报错,缺少依赖
[OHOS INFO] ~/Desktop/oh/4x/out/rk3568
[OHOS INFO]
[OHOS INFO] cmd ['/home/dic/Desktop/oh/4x/third_party/openssl/make_openssl_build_all_generated.sh', '/home/dic/Desktop/oh/4x/third_party/openssl', '/home/dic/Desktop/oh/4x/out/rk3568/obj/third_party/openssl/build_all_generated', 'linux-armv4'] ok
[OHOS INFO]
[OHOS ERROR] ERROR at //third_party/libnl/BUILD.gn:13:1: Script returned non-zero exit code.
[OHOS ERROR] exec_script("install.sh", [ "$libnl_path" ])
[OHOS ERROR] ^----------
[OHOS ERROR] Current dir: /home/dic/Desktop/oh/4x/out/rk3568/
[OHOS ERROR] Command: /usr/bin/env /home/dic/Desktop/oh/4x/third_party/libnl/install.sh /home/dic/Desktop/oh/4x/third_party/libnl
[OHOS ERROR] Returned 1 and printed out:
解决方案:首次编译环境报错的时候,安装编译OpenHarmony需要的库和工具。
sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev 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 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