[文章]

【HarmonyOS HiSpark AI Camera试用 连载】单独编译一个程序

2020-11-26 22:18:09  297 HarmonyOS HiSpark 鸿蒙系统 python
分享
使用python工具对整个系统打包编译整体大家都很熟悉了,但如果只是想熟悉一下代码,那么将应用程序拿出来单独编译也是可行的,我手上是AIC
所以用范例
\applications\sample\camera\app\
做了尝试,代码很简单,大家手上都有,这里就不做解释了。
首先是不带参数,可以在Linux下运行。
然后加上目标为arm-liteos,并且需要带上相应的库进行编译,可以看到,现在在linux下是不能运行了。
我把它截在一张图片里面了
图片1.png
把a.out文件放到板上
图片2.png
可以看到显示与在Linux中基本一致。

从执行效果来看,显示完全一样,但这个两个文件的差异在哪里呢?

采用二进制编辑器分别打开这两个文件打开看看,连接环境有差异(注意看下面第一行51 00 00 00后面的内容):
Linux下实际调用的还是GCC
图片3.png
还可以看到其使用的缺省参数:
-mtune=generic -march=x86-64 -g -O2 -std=gnu99 -fgnu89-inline -fmerge-all-constants -frounding-math -fPIC
图片4.png

带上参数,使得运行环境为liteos的话,则显示为Linker LLD
图片5.png

当然如果想查看文本内容,在执行文件中,应该开始可以看到的,如下:
图片6.png
图片7.png
至于在liteos环境里面的a.out文件中Hello之前的*号为什么在执行程序中看不见,我认为可能是clang做的优化,将其余后面相同的内容合并压缩了。如果需要进一步研究,可以考虑用单步编译看看中间文件。
写在最后:
本文着急发出是为了解答群友提出的两个问题:
1、能不能单独编一个程序
2、编译好的程序和运行环境有没有关系

当然更深入的研究还有待展开。

0
2020-11-26 22:18:09   评论 分享淘帖
1 个讨论
补充一句,在clang -target arm-liteos语句中为什么不用-target arm-linux-ohos,当然是因为下载的sysroot代码里面没有 arm-linux-ohos库啊。
2020-11-26 22:34:37 评论

举报

补充linux下两个命令,也许更好说明:file命令和readelf命令。
2020-12-5 10:46:22 评论

举报

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖