很荣幸提前拿到了XR806
开发板,但是全志只是适配了1.1.2L.TS,而最新的H
ARMony已经到3.0_LTS了,决定尝试是适配最新的3.0_LES,折腾了大半天,起码还是适配好了。
首先是vendor文件夹,鸿蒙3.0修改了很多文件夹名称和文件路径,需要在config.json中把该修改的都修改了。(security去掉好像对编译没什么影响,添加了还会报错,暂时不知道怎么搞的,先删除)
hals文件夹的内容也报错,我直接把海思的hals文件夹复制进来了
接下来编译hiview时提示有几个C库没找到,添加了C库还是报错,认真看才发现鸿蒙自身就屏蔽了C库,原因也不知道是为啥,总之先屏蔽掉下面两个编译选项
编译依旧报错。。。提示asmflags重复了,这个全志本身的代码中定义了一个asmflags在旧系统中没有报错,但是新的系统估计是鸿蒙官方补上了漏洞,果断把全志的代码给删了。
之后依旧是愉快的报错bad instruc
tion
错误说的是汇编没办法识别typedef(废话啊,汇编还能识别typedef不上天),明显是编译汇编时,也包含了.h,导致出错,只能把系统源码再改一改
然后把刚刚删掉的asmflags改回来,等于全志的代码先别动。
编译依旧报错,但接下来的报错都是因为鸿蒙系统代码引起的修改,只放图了
总算全部编译通过后,ld链接时又报错,提示没有定义snprintf_s,这个库函数确实在部分C库中没有,然后我在鸿蒙的utils/native/base/src文件夹里面找到了原型,正如里面的字面描述,这个文件夹就是个增强型的C库,而从第一个问题报出来我就知道全志用的是gcc的标准C库,改掉SDK的c库我可没那么大能耐,就偷懒把utils/native/base/src里面的snprintf_s复制下来,单独弄成一个静态库了,之后总算编译通过了,对比1.1.2,flash大了5k。。。
修改点实在太多了,上面的可能也有不少遗漏,还是等全志赶紧放出3.0的SDK吧。
> 原贴链接:
https://bbs.aw-ol.com/topic/506/
> 全志在线开发者交流企鹅群(客服机器人24小时在线解答):498263967
> 资源获取、问题讨论可以到全志在线开发者社区进行:
https://www.aw-ol.com
> 全志及开发者最新动态可以关注全
志在线微信公众号