鸿蒙APP编译
第四章 编译其他APP
1.1 获取源码
我们提供了这几个程序:
放在GITEE上,地址为:https://gitee.com/weidongshan/openharmony_for_imx6ull 为了方便,可以在Ubuntu中执行以下命令直接下载:
cd /home/book
git clone https://gitee.com/weidongshan/openharmony_for_imx6ull.git
这将会得到这个目录:/home/book/openharmony_for_imx6ull
1.2 编译程序
假设已经下载得到/home/book/openharmony_for_imx6ull目录,执行以下命令即可编译:
cd /home/book/openharmony_for_imx6ull/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,如下修改路径:
1.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/openharmony_for_imx6ull/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/
1.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目录,就可以使用烧写工具启动了:
1.5 执行APP
这些APP,可以直接执行,如果需要参数的话,它会提示用法。 注意:必须用相对路径,比如“./bin/hello”;不能用绝对路径,比如“/bin/hello”
1.5.1 fb_test
执行以下命令:
./bin/fb_test /dev/fb0
效果如下:
1.5.2 show_line
执行以下命令:
./bin/show_line /simsun.ttc 230 230 100
效果如下:
1.5.3 digitpic
执行以下命令:
./bin/digitpic /simsun.ttc
可以点击屏幕上的图标,效果如下:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP设计模式之迭代器(Iterator)模式入门与应用详解
- PHP FileSystem 文件系统常用api整理总结
- laravel框架之数据库查出来的对象实现转化为数组
- php apache开启跨域模式过程详解
- laravel5.6实现数值转换
- python中return不返回值的问题解析
- php装饰者模式简单应用案例分析
- php常用日期时间函数实例小结
- PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
- 基于laravel缓冲cache的用法详解
- Python使用sys.exc_info()方法获取异常信息
- laravel通用化的CURD的实现
- Laravel修改验证提示信息为中文的示例
- PHP+redis实现微博的推模型案例分析
- Laravel 解决composer相关操作提示php相关异常的问题