电子产业一站式赋能平台

PCB联盟网

搜索
查看: 709|回复: 1
收起左侧

韦东山鸿蒙系统移植课程:编译第一个APP:hello

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-9-30 17:56:43 | 显示全部楼层 |阅读模式
韦东山鸿蒙系统移植课程:编译第一个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的框架如下:

53.png (103.77 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传 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目录下,操作截图如下:

54.png (47.93 KB, 下载次数: 0)

下载附件  保存到相册  

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

57.png (15.2 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传 进入命令行后,就可以执行hello程序了,如下图所示:

58.png (2.04 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传 注意:必须用“./bin/hello”,不能用绝对路径“/bin/hello”
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表