【笔记】编译OpenHarmony代码

参考:HarmonyOS Device > 文档 > 指南 > OpenHarmony设备开发编译运行】章节

源码编译步骤

1、执行prebuilts_download.sh 脚本

此步骤通用

#在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
build/prebuilts_download.sh
prebuilts 开始
prebuilts 开始

prebuilt完的内存,会生成了3.5G的文件夹。

下载完毕后开始安装,这里会卡顿一下无输出,等待几分钟即可。

download finished
npm install try times: 1
start npm install, please wait.

prebuilts_download.sh 脚本执行完成
prebuilts_download.sh 脚本执行完成

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
  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN是中国最大的IT技术社区,编译原理是计算机科学中的重要课程之一。关于CSDN上编译原理的笔记,我可以从以下几个方面进行回答。 首先,CSDN上编译原理的笔记文档丰富多样,涵盖了编译原理的各个方面,包括词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等。这些笔记以通俗易懂的语言编写,让初学者也能够轻松理解编译原理的基本原理和实现方式。同时,笔记中还提供了大量的示例代码和实践案例,帮助读者更好地理解和应用编译原理的知识。 其次,CSDN上编译原理的笔记内容全面,既包括理论知识,也包括实践经验。对于理论知识,笔记中详细介绍了编译器的工作原理、各个阶段的算法和数据结构等内容,以及常用的编译器设计模式和优化方法。对于实践经验,笔记中分享了一些常见的编译器实现技巧,如错误处理、符号表管理、代码生成等。这些内容对于编译原理的学习和实践非常有帮助。 最后,CSDN上编译原理的笔记具有互动性和实时性。读者可以通过评论、提问等方式与笔记作者进行交流和讨论,解决自己在学习编译原理过程中遇到的问题。同时,笔记作者也会定期更新和修正笔记内容,确保笔记始终保持最新、最正确的信息。 综上所述,CSDN上编译原理的笔记提供了丰富多样的内容,既有理论知识,又有实践经验,对于学习和理解编译原理非常有帮助。读者可以通过阅读这些笔记,深入学习编译原理的基本原理和实现方式,并应用到实际项目中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值