[文章]【HarmonyOS HiSpark AI Camera试用连载 】用arm-linux-gnueabihf-gcc编译应用程序(没搞定)

阅读量0
0
0
突发奇想,看看能不能用gcc编译,于是安装了一个arm-linux-gnueabihf-gcc,尝试编译”applications/sample/camera/app”文件。
编译过程没有什么好说的,自然一次成功。把编译好的文件放在userdata文件夹下运行
图片1.png
当然是不能运行的。
我们再仔细研究一下elf文件的格式组成。
图片2.png
对于我们希望编译出来可以执行的elf,应该看右图“执行视图”。当我们使用./XXX命令执行一个可执行的elf文件时,动态链接器(即加载器)会以执行视图解析这个文件,对于这个文件来说,最重要的就是段表(即Segment)。
上述错误提示也是说表的地址错误了,使用readelf文件分别查看并比较两个文件:
(下图左为clang编译,右为gcc编译)。
图片3.png
发现使用gcc编译的文件多了段.note.ABI-tag.note.gnu.build-i.gnu.version.gnu.version_r,缺少段.got.plt.eh_frame_hdr.bss.rel.ro
可以看到,缺少的和多出的字段都不具有X(执行)属性,理论上是不影响elf是否可以被执行的。
执行环境,out of memory的原因可能是:
图片4.png
Hi3516DV300实际采用芯片的结构为“ARMv7架构”,但采用gcc编译出的版本为v6,导致程序不可使用?
以上只是推测,实际情况还请大佬们评估。

回帖

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