具体问题:
在使用keil的时候,在定义外部用户函数注册接口的时候 使用了 attribute((weak)) 将外部用户接口暴露出来,然后正常来说用户只需要根据要求对应的实现这个接口即可,但在keil下即使定义了当前接口,编译器也直接跳过了它,导致用户无法使用该接口。
问题寻找思路:
1.尝试其它编译工具,通过将代码在GCC ARM编译可以正常使用接口。
2.尝试更改优化等级之前-o3改为-o0。(没有效果。
3.尝试使用ARM CC V5,之前使用的v6.16。(也不行
最后查找map文件,发现用户定义的函数没有被定义。大概是ELF文件的问题,最后找到
One ELF Section per Function
取消勾即可。