第三章 编译第一个APP:hello

1.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的框架如下:

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

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

优化后得到的IR,再由“Backend”(后端)转换为各种机器的机器码。

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

1.2 编译hello程序

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

在为Liteos-a编译程序时,以hello程序为例,可以执行以下命令:

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

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

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

cd  /home/book/openharmony_for_imx6ull/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

1.3 把hello程序放入rootfs

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

cd  /home/book/openharmony_for_imx6ull/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目录下,操作截图如下:

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

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

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

全文下载技术交流群(鸿蒙开发/Linux/嵌入式/驱动/资料下载)QQ群:869222007

bin文件查看器app_鸿蒙系统编译第一个APP:hello相关推荐

  1. bin文件查看器app_腾讯文件:腾讯官方出品的微信 / QQ 文件管理和清理利器

    前言 微信和 QQ 基本是大家手机上的必备应用了,但是使用时间久了,难免会积攒很多文件,甚至引起应用卡顿. 包括垃圾/缓存文件,或者我们接收保存的文件等等,占据了大量空间,又不好管理. 今天就分享一款 ...

  2. 好用的Bin文件查看器,J-flash

    工作中,很多地方用到Bin文件,如编译完成后的固件和从MCU的Flash读出来的文件,这时候一个好的Bin文件查看器至关重要.经常我们用STM32自带的STM32 ST-LINK Utility可以直 ...

  3. Linux 下高级日志文件查看器Log File Navigator

    Log File Navigator,简称lnav,是一款面向小规模的适用于 Linux 的高级日志文件查看器.它是一个终端应用程序,可以理解您的日志文件,让您轻松找到问题,几乎不需要什么设置. ln ...

  4. 【玩转.Net MF – 03】远程文件查看器

    虽说目前.Net Micro Framework已经支持文件系统(FAT16/FAT32),但在远程还无法直接访问,从某种意义上讲,无法和PC交互的存储介质显得有些鸡肋.我做SideShow相关开发的 ...

  5. IFC模型文件查看器(基于IFC++开源库实现)

    关于IFC IFC是由buildingSMART以工业的产品资料交换标准STEP编号ISO-10303-11的产品模型信息描述用EXPERSS语言为基础,基于BIM中AEC/FM相关领域信息交流所指定 ...

  6. 使用广泛的开源PCB文件查看器 Gerbv 含多个严重漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...

  7. 【iOS_GitHub】文档/文件查看器(支持本地或者其他app分享过来的word、excel、pdf、rtf等格式文件)

    DocViewer(文档/文件查看器) Function Description 文档查看器(Word && Excel && PDF && Rft | ...

  8. 点阵字体文件查看器 c#(HZK16)

    在MCU项目中,准备自己写个简单的UI,在中文文字显示,打算选择 UCDOS 中的 HZK16,为了查看字体文件,用C#写了个简单的查看器,并导出数据为C语言数组(因为所用的STM32F103VET片 ...

  9. 【实用软件】Json文件查看器(支持查看超大JSON文件)

    内容信息 软件类型:绿色 软件平台:电脑 软件版本:v1.0 软件大小:3.4MB 软件特点 Json文件查看器是一个用来查看Json文件的的绿色软件

  10. html文件阅读器电脑版,Excel文件查看器

    Excel文件查看器电脑版是一款文档查看软件,Excel文件查看器电脑版对于需要临时查看Excel文档但是又不需要修改它的用户来说,Excel文件查看器电脑版无疑是最佳选择,速度快并且小巧,是个不错的 ...

最新文章

  1. html5面板制作代码,HTML5绘制设备面板
  2. Objective-C中的KVC与KVO(上)
  3. day1 作业编写登录窗口
  4. c语言 临时文件作用,c语言函数mktemp()产生唯一临时文件名实例源码介绍
  5. c语言一行代码太长,C语言修改一行代码,运行效率居然提升数倍,这个技巧你知道吗...
  6. 如何把 Word 中的表格快速插入 LaTeX?
  7. Learning to Rank简介
  8. XFire WebService demo
  9. codeforces educational round110 e
  10. 【项目】springboot中使用kaptcha生成验证码,登录时密码加盐处理
  11. 关于hibernate的查询
  12. node.js mongodb ReplSet
  13. 数据库名,全局数据库名,SID区别及有感
  14. Unable to start LiveReload server
  15. spss系列——一元线性回归的分析与预测实例
  16. C语言——输入两个正整数m和n,求其最大公约数和最小公倍数
  17. php人民币转换,PHP转换,如何实现人民币中文大写与数字相互转换?
  18. 静候 CSDN 佳音
  19. 计算机关机符号不见了,笔记本电量图标不见了怎么修复?
  20. 网站常用邮箱找回密码流程插件页面

热门文章

  1. Google earth
  2. Tomcat----windows系统通过命令符“强制关闭Tomcat”
  3. C++排序算法——归并排序
  4. Python计算坡度坡向并输出二维、三维图
  5. gdal.Buildvrt和gdal.Warp工具实现TIF影像拼接、矢量裁剪
  6. 二维数组,字符串,字符数组
  7. JS学习总结(10)——Windows对象
  8. 微信解绑手机号服务器会保留吗,我把我的微信号给了别人,银行卡都解绑了,但手机号还在绑定,会不会有危险...
  9. php . 和..,?php?和??
  10. go语言语法自我总结