电子产业一站式赋能平台

PCB联盟网

搜索
查看: 625|回复: 0
收起左侧

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

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-12-5 23:56:04 | 显示全部楼层 |阅读模式
【HarmonyOS HiSpark AI Camera试用连载 】用arm-linux-gnueabihf-gcc编译应用程序(没搞定), 突发奇想,看看能不能用gcc 编译,于是安装了一个 arm-linux-gnueabihf-gcc ,尝试编译”applications/sample/camera/app” 文件。 编译过程没有什么好说的,自然一次成功。把编译好的文件放在userdata 文件夹下运行

图片1.png (4.28 KB, 下载次数: 0)

下载附件  保存到相册  

8 小时前 上传 当然是不能运行的。 我们再仔细研究一下elf 文件的格式组成。

图片2.png (61.79 KB, 下载次数: 0)

下载附件  保存到相册  

8 小时前 上传 对于我们希望编译出来可以执行的elf ,应该看右图“执行视图”。当我们使用 ./XXX 命令执行一个可执行的 elf 文件时,动态链接器(即加载器)会以执行视图解析这个文件,对于这个文件来说,最重要的就是段表(即 Segment )。 上述错误提示也是说表的地址错误了,使用readelf 文件分别查看并比较两个文件: (下图左为clang 编译,右为 gcc 编译)。

图片3.png (130.32 KB, 下载次数: 0)

下载附件  保存到相册  

8 小时前 上传 发现使用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 (55.53 KB, 下载次数: 0)

下载附件  保存到相册  

8 小时前 上传 Hi3516DV300 实际采用芯片的结构为“ARMv7 架构”,但采用 gcc 编译出的版本为 v6 ,导致程序不可使用? 以上只是推测,实际情况还请大佬们评估。
回复

使用道具 举报

发表回复

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

本版积分规则


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