鸿蒙移植i.mx6ull(四) 编译Liteos-a与APP(上)

简介: 鸿蒙移植i.mx6ull(四) 编译Liteos-a与APP

1. 下载源码并编译


1.1 在Ubuntu中安装开发环境


确保Ubuntu能上网之后,使用下面命令一键配置/初始化开发环境(其实就是安装tftp,nfs,vim等软件,此脚本只支持Ubuntu-16.04/Ubuntu-18.04)。 注意:为了方便大家复制,这些命令写成了多行,你要把它们复制到记事本,合并成一行,注意空格:

book@100ask: ~ $ wget --no-check-certificate -O Configuring_ubuntu.sh https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmentEnvConf/git/raw/master/Configuring_ubuntu.sh && sudo chmod +x Configuring_ubuntu.sh && sudo ./Configuring_ubuntu.sh


首先,它会做一些检查,然后列出一个菜单供你选择:

1670998566956.jpg

在这个菜单里,你可以选择这三项之一:

1670998575393.jpg

其实第一项包含了第二项,无论你是开发鸿蒙还是Linux,都可选择第一项。


假设你选择了第一项,该脚本会执行下面的函数:

1670998583237.jpg

从上图中各个函数的名字就可以知道,它会做这些事情:

设置Ubuntu软件源、安装通用的软件(比如GCC、manual手册)、安装Linux开发软件(比如NFS、SAMBA)、安装鸿蒙开发软件(比如llvm)。


1.2 下载、编译鸿蒙内核Liteos-a


Liteos-a内核变化比较大,华为提交得也比较频繁。无法再repo从官方GIT仓库下载本视频配套的源码。我们把本教程所使用的源码上传到了自己的GIT仓库里。


1.2.1 配置GIT与REPO


需要在ubuntu下执行如下命令来配置GIT客户端的用户信息,比如(下面命令的用户名、邮箱可以随便写):

git config --global user.name "100ask"
git config --global user.email "weidongshan@qq.com"
git config --global credential.helper store
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
sudo cp repo /usr/local/bin/repo && sudo chmod a+x /usr/local/bin/repo
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

1670998612957.jpg

1670998621689.jpg


1.2.2 下载源码


执行以下命令下载:

cd /home/book
git clone  https://e.coding.net/weidongshan/openharmony/doc_and_source_for_openharmony.git
mkdir openharmony
cd openharmony/
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-1.0
repo sync -c -j8y


可以得到如下文件,它就是源码(为了节省GIT仓库容量,STM32MP157所用的openharmony源码也放在这里):

1670998641166.jpg


1.2.3 解压源码


执行如下命令:

tar xjf openharmony_for_video_tutorial.tar.bz2 -C /home/book/


可以得到这目录:/home/book/openharmony


1.2.4 编译官方版本(不要试)


我们先为官方板子hi3518ev300编译Liteos-a,确保环境没有问题。后面再打上补丁,为IMX6ULL编译鸿蒙。

进入源码根目录,执行以下命令:

cd  /home/book/openharmony
python build.py ipcamera_hi3518ev300 -b debug


等待一会,结果如下:

1670998668401.jpg

我们不打算使用hi3518ev300,上述命令只是为了确定开发环境没问题。

并且rootfs.tar中有很多库,比如libfreetype.so,以后可以直接使用。


2. 给IMX6ULL编译Liteos-a(直接贴这个补丁)


补丁文件openharmony_100ask_v1.2.patch既支持IMX6ULL,也支持STM32MP157,只需要打一次补丁。它位于如下目录,这两个目录里的文件是一样的:

doc_and_source_for_openharmony\IMX6ULL\source\01_文档配套的源码\patch\
    openharmony_100ask_v1.2.patch
doc_and_source_for_openharmony\STM32MP157\source\01_文档配套的源码\A7\patch\
    openharmony_100ask_v1.2.patch


2.1 下载补丁文件


如果已经在Windows里下载了GIT资料,可以把补丁文件上传到Ubuntu。 也可以在Ubuntu中执行以下命令再次下载:

cd  /home/book
$ git clone https://e.coding.net/weidongshan/openharmony/doc_and_source_for_openharmony.git


2.2 使用补丁文件修改代码


假设在/home/book/openharmony目录下是鸿蒙的源码,补丁文件openharmony_100ask_v1.2.patch放在/home/book目录下。

执行以下命令打补丁:

cd  /home/book/openharmony
patch -p1 < /home/book/openharmony_100ask_v1.2.patch


注意:鸿蒙的内核在不断更新,这个补丁是针对“OpenHarmony-1.0”版本的。

所以前面使用repo下载代码时必须指定“-b OpenHarmony-1.0”,参考《1.2.2 下载源码》。


2.3 编译


我的修改还不完善,还无法在根目录下编译。 需要进入kernel/liteos_a目录下配置、编译:

cd  /home/book/openharmony/kernel/liteos_a
cp  tools/build/config/debug/imx6ull_clang.config .config   // 配置
make clean      // 先清除一下,否则会提示错误
make  -j  8     // 编译内核,可以得到out/imx6ull/liteos.bin
make  rootfs    // 编译根文件系统,可以得到rootfs.img
cp  out/imx6ull/rootfs.img out/imx6ull/rootfs.jffs2 // 改个名易辨认,烧写工具使用rootfs.jffs2


如果一切正常,结果如下:

1670998728139.jpg

把上面得到的liteos.bin、rootfs.jffs2,复制到烧写工具的files目录下,然后参考《第3篇

体验鸿蒙内核Liteos-a》,使用烧写工具下载运行它们。


3. 编译第一个APP:hello


3.1 Clang、LLVM与GCC介绍


我们在Ubuntu中给PC机编译程序时,执行这样的命令:

gcc  -o  hello   hello.c


我们在Ubuntu给ARM板编译程序时,执行这样的命令(gcc前缀可能不一样):

arm-linux-gcc  -o  hello   hello.c


在Liteos-a中,使用LLVM来编译程序。LLVM的本意是“Low Level Virtual Machine”,一个底层的虚拟机。但是它现在已经发展成了一种编译器(compiler)的框架系统。简单地说,LLVM可以取代GCC,LLVM容易扩展,可以提供更好的性能。

LLVM的框架如下:

1670998752086.jpg

Clang是“Frontend”(前端),用来执行词法分析、语法分析,简单地说就是:检查语法错误、包含头文件、扩展宏。

中间是优化器,把前端分析好的代码转换为LLVM IR(中间表示,intermediate representation),IR与机器无关,可以很方便地添加一系列的优化。 优化后得到的IR,再由“Backend”(后端)转换为各种机器的机器码。


以上内容来自网络,我对Clang、LLVM理解不深,简单介绍一下而已。

相关文章
|
5月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
871 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
735 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
944 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
JSON 自然语言处理 数据格式
使用Tabs选项卡组件快速搭建鸿蒙APP框架
ArkUI提供了很多布局组件,其中Tabs选项卡组件可以用于快速搭建鸿蒙APP框架,本文通过案例研究Tabs构建鸿蒙原生应用框架的方法和步骤。
512 5
使用Tabs选项卡组件快速搭建鸿蒙APP框架
|
5月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
282 0
|
6月前
|
存储 数据库 开发工具
HarmonyOS APP应用开发项目- MCA助手(Day04持续更新中~)
本项目为基于HarmonyOS的端云一体化记账App,集成华为AGC云数据库与认证服务,实现用户注册登录及数据云端存储。通过DevEco Studio开发,解决CloudProgram模块显示问题,完成云数据库初始化与用户信息关联功能。
272 1
HarmonyOS APP应用开发项目- MCA助手(Day04持续更新中~)
|
6月前
|
安全 开发工具 开发者
HarmonyOS APP应用开发项目- MCA助手
moneyControllerApp(MCA)是一款基于鸿蒙HarmonyOS Next开发的个人财务管理应用,采用端云一体化架构,支持多设备协同与数据实时同步。应用通过DevEco Studio集成Cloud Foundation Kit,实现高效云端联动,具备登录注册、主页导航、钱包管理、个人信息维护及支付功能,界面简洁,操作流畅,助力用户智能化管理财务。项目开源,支持二次开发。
233 1
|
6月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
496 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
9月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
8月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素

热门文章

最新文章