南向开发鸿蒙4.0,命令行编译的环境配置、码源下载、编译

本文是记录我在安装过程中遇到的问题和参考的文章

本文参考了http://t.csdnimg.cn/TH4Gm这个博主的文章,但是我跳了很多步。

一开始用的是基于IDE开发,但是DevEco Tool里最高版本的码源只有3.2版本,于是改用基于命令行开发,进入正题

按照开发者手册的安装,我省略了好多步(因为我的目的就是为了编译成功)

有些步骤还是不能省略,我重新整理了一下!!!!

Windows环境要求

源码烧录需要Windows10 64位的系统环境。

Ubuntu环境要求

  • Ubuntu18.04及以上版本,X86_64架构,内存推荐16 GB及以上。(Ubuntu的运行内存非常重要

  • Ubuntu系统的用户名不能包含中文字符。

!!!Ubuntu22.04版本的不支持!!!(非常重要)Ubuntu20.04版本的最优!!!

必要的环境配置

将Shell环境修改为bash

sudo dpkg-reconfigure dash

(会跳出一个页面,选择no就行)

替换Ubuntu软件源

(1)在https://mirrors.ustc.edu.cn/repogen/网站上下载对应版本的最新源

!!!注意:版本别下错了

(2)将etc/apt路径下的sources.list文件的内容改为在(1)中下载的最新软件源

!!!注意:如果没有更换成功,会造成库和工具的安装失败

(3)更新软件包索引

sudo apt update

(4)配置国内源

sudo vim ~/.pip/pip.conf

在文件里添加

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

安装必要的库和工具

!!!如果这个没安装后续会出现3000的报错

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
sudo apt-get install gcc-arm-linux-gnueabi gcc-9-arm-linux-gnueabi

  配置Python


  设置默认Python解释器:


   

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
python --version

   安装python包管理工具(pip3):

sudo apt install python3-pip

   配置pip软件包更新源:


 

 mkdir ~/.pip
 pip3 config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple
 pip3 config set global.trusted-host mirrors.huaweicloud.com
 pip3 config set global.timeout 120

获取源代码的必要工具和配置

安装git-lfs:

sudo apt install git-lfs


安装git/git-lfs/python/curl:

sudo apt install git git-lfs python3-pip curl


安装码云repo工具命令:

mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

和Gitee连接

  配置git和SSH公钥


  #配置git(请将下面的邮箱和用户名换成您自己的):
 

 git config --global user.email "xxx@xxx.com"//你的邮箱账号
  git config --global user.name "edu"   //Ubuntu的用户名
  git config --global credential.helper store
  git config --global --add safe.directory "*"

  #生成/添加SSH公钥
   

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  


   # Generating public/private ed25519 key pair...
   按照提示完成,即可生成 ssh key。
   通过查看 ~/.ssh/id_ed25519.pub 文件内容,获取到你的 public key
   

cat ~/.ssh/id_ed25519.pub

   将获得的公钥复制,打开Gitee的个人中心的SSH公钥,将公钥添加

   #添加后,在终端(Terminal)中输入
 

 ssh -T git@gitee.com  


   若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。

拉取源码

//新建的文件夹在文件夹下下载源码

mkdir -p ~/openharmony/4.0
cd ~/openharmony/4.0

#源码下载

repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-4.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

#在源码根目录下执行prebuilts脚本,安装编译器及二进制工具:

bash build/prebuilts_download.sh


#下载的prebuilts二进制默认存放在与OpenHarmony同目录下的OpenHarmony_2.0_canary_prebuilts下
# prebuilts_download.sh这个脚本会创建prebuilts目录,并将边回忆工具链下载、解压到这个目录下

安装编译工具


#在源码根目录运行如下命令安装hb并更新至最新版本:

python3 -m pip install --user build/hb

#设置环境变量:

echo 'export PATH=~/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

编译

./build.sh --product-name rk3568 --ccache

(编译的时间好久)

编译过程中有出现报错

截取小片段的报错,类似这种

解决方法;

  1. 清理构建环境

    • 转到 OpenHarmony 的根目录。
    • 运行以下命令之一来清理构建环境:
      hb clean --all         #(建议用这个)
      或者
      rm -rf out build/resources/args/*.json
  2. 同步代码仓库

    • 运行 repo sync 命令来确保所有子模块和依赖项是最新的。
  3. 拉取 Git LFS 文件

    • 如果项目使用 Git LFS 存储大文件,运行以下命令来确保所有 LFS 文件都已拉取:
      repo forall -c 'git lfs pull'
  4. 下载预构建文件

    • 执行脚本下载所需的预构建文件:
      bash build/prebuilts_download.sh
  5. 重新构建产品或组件

    ./build.sh --product-name rk3568 --ccache

然后就会接着你之前断开的地方继续编译,最后还是出现报错4000的问题,尝试了很多种方法,重新拉码源,重新安装库,重新配环境,重新安装Ubuntu,最后都是报错4000。于是直接拷贝了编译成功的Ubuntu在我的电脑上进行2次编译,最后还是报错。查了很多资料,最后确定是运行内存不足的问题

扩大WSL的运行内存

Windows + R 键

输入 %UserProfile% 并运行进入用户文件夹

新建文件 .wslconfig,文件内容如下:

[wsl2]
memory=7G    # 限制最大使用内存,不使用64G,是为了为Windows保存一些内存,不这么卡
swap=7G         # 限制最大使用虚拟内存

然后运行Windows cmd,输入 `wsl --shutdown` 来关闭当前的子系统,重新运行bash进入子系统

注意.wslconfig文件的后缀别忘记删了

进入Ubuntu的时候可以用 free -m的指令来查看运行内存是否设置成功。

成功后,重新编译,编译成功!!!

总结:是因为我电脑的运行内存不足,再加上wsl的默认运行内存也小,导致的4000报错的问题

  • 31
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值