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

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

3.2 编译hello程序


使用Clang时,我们要指定很多参数:为哪类CPU编译程序(ARM还是Risc-V),CPU架构是什么(cortex A7还是cortex A15),头文件/库文件在哪? 在为Liteos-a编译程序时,以hello程序为例,可以执行以下命令:

cd  /home/book/doc_and_source_for_openharmony/apps/hello
clang -target arm-liteos   --sysroot=/home/book/openharmony/prebuilts/lite/sysroot/  \
   -o  hello   hello.c


上述命令的sysroot参数中,指定有标准头文件、库文件的目录。

还可以像GCC一样使用“-I”、“-L”参数指定其他头文件的目录、库文件的目录,比如后面会编译这个程序:

cd  /home/book/doc_and_source_for_openharmony/apps/freetype
clang -target arm-liteos   --sysroot=/home/book/openharmony/prebuilts/lite/sysroot/  \
-I /home/book/openharmony/third_party/freetype/include \
-L /home/book/openharmony/out/ipcamera_hi3518ev300/libs/usr  \
-lfreetype \
-o show_line show_line.c


3.3 把hello程序放入rootfs


编译出hello程序后,可以把它放入rootfs目录下的bin字母,比如:

cd  /home/book/doc_and_source_for_openharmony/apps/hello
cp  hello  /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin


然后重新制作rootfs.jffs2,执行以下命令:

cd  /home/book/openharmony/kernel/liteos_a/out/imx6ull/
mkfs.jffs2  -s 0x10000 -e 0x10000 -d rootfs -o rootfs.jffs2


假设hello程序位于/home/book/apps/hello目录下,操作截图如下:

1670998805404.jpg

把得到的rootfs.jffs2放到烧写工具的files目录,就可以使用烧写工具启动了:

1670998813982.jpg

进入命令行后,就可以执行hello程序了,如下图所示:

1670998823161.jpg

注意:必须用“./bin/hello”,不能用绝对路径“/bin/hello”


4. 编译其他APP


4.1 获取源码


我们提供了这几个程序:

1670998851498.jpg

放在GIT上,地址为:

https://e.coding.net/weidongshan/openharmony/doc_and_source_for_openharmony.git

为了方便,可以在Ubuntu中执行以下命令直接下载:

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


这将会得到这个目录:/home/book/doc_and_source_for_openharmony


4.2 编译程序


假设已经下载得到/home/book/doc_and_source_for_openharmony目录,执行以下命令即可编译:

cd  /home/book/doc_and_source_for_openharmony/apps
for i in $(ls); 
  do cd $i; 
  make; 
  cd -; 
done


解释以下上面的命令。 $(ls)里列出了这几个目录:digital_photo_frame fb_test freetype hello。 对于其中的每一项“$i”,执行(do)这些命令:

cd  $i;
make; 
cd -


就是进入该目录,执行make命令,退到上一级目录。 你当然可以自己进入那些子目录,手工执行make命令。


注意:

(1)freetype、digital_photo_frame这2个程序,需要使用到前面编译出来的hi3518ev300的库文件。

(2)所以需要先执行“python build.py ipcamera_hi3518ev300 -b debug”

(3)如果鸿蒙源码的路径不是/home/book/openharmony,那么需要修改Makefile,如下修改路径:

1670998885852.jpg

4.3 复制程序到rootfs


这2个程序不依赖其他动态库:hello、fb_test;

但是freetype程序依赖libfreetype.so、digital_photo_frame程序依赖libfreetype.so、libjpeg.so。

这几个动态库在哪?我们取个巧,之前在《1.2.4 编译官方版本》执行过“python build.py ipcamera_hi3518ev300 -b debug”,它为hi3518ev300开发板生成了这写库文件。hi3518ev300与imx6ull同属cortex A7架构,所以imx6ull可以使用这些库。以后完善imx6ull的代码后,就不需要这样取巧了。 执行以下命令复制程序:

cd  /home/book/doc_and_source_for_openharmony/apps
# 拷贝应用程序
cp hello/hello  /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin
cp fb_test/fb_test  /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin
cp freetype/show_line /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin
cp digital_photo_frame/digitpic /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin
# 拷贝字体文件
cp freetype/simsun.ttc  /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/
# 拷贝数码相框的图标
cp digital_photo_frame/rootfs /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/  -rf
# 拷贝库文件
cp /home/book/openharmony/out/ipcamera_hi3518ev300/libs/usr/libfreetype.so /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/usr/lib/
cp /home/book/openharmony/out/ipcamera_hi3518ev300/libs/usr/libjpeg.so /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/usr/lib/


4.4 制作rootfs.jffs2


执行以下命令:

cd  /home/book/openharmony/kernel/liteos_a/out/imx6ull/
mkfs.jffs2  -s 0x10000 -e 0x10000 -d rootfs -o rootfs.jffs2


把得到的rootfs.jffs2放到烧写工具的files目录,就可以使用烧写工具启动了:

1670998918413.jpg

4.5 执行APP


这些APP,可以直接执行,如果需要参数的话,它会提示用法。

注意:必须用相对路径,比如“./bin/hello”;不能用绝对路径,比如“/bin/hello”


4.5.1 fb_test


执行以下命令:

./bin/fb_test /dev/fb0


效果如下:

1670998964479.jpg

4.5.2 show_line


执行以下命令:

./bin/show_line /simsun.ttc 230 230 100

效果如下:

1670998982920.jpg

4.5.3 digitpic


执行以下命令:

./bin/digitpic /simsun.ttc


可以点击屏幕上的图标,效果如下:

1670998521438.jpg

相关文章
|
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开发使用实例
|
5月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1003 139
|
5月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
477 137

热门文章

最新文章