keil常见编译问题和解决
1. 场景1
a. 现象:
undefined symbol xxx (referred from xx.o)
b. 问题分析: 翻译:符号未定义
两种情况:
情况一:我的源代码(.c)还有自己的(.h)文件没有声明
情况二:我也没搞明白的,代码可能被优化了,声明了却还是无法编译
c. 解决方式
场景一:才源代码和头文件中去定义,声明
场景二:把原来的源文件和头文件都先删除,之后编译一下,再重新定义函数和头文件声明
2. 场景2
a. 现象:
error: L6236E: No section matches selector - no section to be
点击问题后跳转
问题分析
问题在起始文件处
第一个原因是:没有添加起始文件
第二个原因是:起始文件的格式和声明格式不同
解决
方法 1. 添加启动文件
找到启动文件 startup 加到 source 文件夹中
找到这个文件 startup 然后添加进去,添加启动文件
方法 2. 改变启动声明形式(我自己取得名字)
如果本身有启动文件start.s ,在启动文件正确的条件下,进入
keil上方工具栏
进入 linker
取消 use memory latout
然后把 scatter 中的文件都清空
3. 场景3:
报错现象:
*** Target ‘Target’ - Device Family ‘Cortex-M0’, default ARM-Compiler version ‘Unspecified: use latest compiler version 5’ is not available.
问题分析:
无法编译的问题,表面提示是版本太低,可以尝试更新版本,但是很麻烦
但实际上可以看到是 ARM - Compiler 的问题,然后找到keil的 arm -compiler
解决方式
这个在哪呢?
keil上方工具栏
点击第一个的魔法棒,看到标签页
选择target,里面看到右边
看到这个标题了无 ?
arm compiler ,然后这里调整一下
就可以了