keil常见编译问题和解决
- 1. 场景1
- a. 现象:
- b. 问题分析: 翻译:符号未定义
- c. 解决方式
- 场景一:才源代码和头文件中去定义,声明
- 场景二:把原来的源文件和头文件都先删除,之后编译一下,再重新定义函数和头文件声明
- 2. 场景2
- a. 现象:
- 问题分析
- 解决
- 方法 1. 添加启动文件
- 方法 2. 改变启动声明形式(我自己取得名字)
- 3. 场景3:
-
1. 场景1
a. 现象:
undefined symbol xxx (referred from xx.o)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c7039b53cdae4226b88e1886f9dd2d0a.png)
b. 问题分析: 翻译:符号未定义
两种情况:
情况一:我的源代码(.c)还有自己的(.h)文件没有声明
情况二:我也没搞明白的,代码可能被优化了,声明了却还是无法编译
c. 解决方式
场景一:才源代码和头文件中去定义,声明
场景二:把原来的源文件和头文件都先删除,之后编译一下,再重新定义函数和头文件声明
2. 场景2
a. 现象:
error: L6236E: No section matches selector - no section to be
![在这里插入图片描述](https://img-blog.csdnimg.cn/09a45e7a72ee45b5bc40c4ab18dbaab2.png#pic_center)
点击问题后跳转
![在这里插入图片描述](https://img-blog.csdnimg.cn/1e0cd3a5f91d4c0497f5cd8acb558194.png#pic_center)
问题分析
问题在起始文件处
第一个原因是:没有添加起始文件
第二个原因是:起始文件的格式和声明格式不同
解决
方法 1. 添加启动文件
找到启动文件 startup 加到 source 文件夹中
![在这里插入图片描述](https://img-blog.csdnimg.cn/4c93ed0fe6754f9ab50c5ca5e3a23db9.png#pic_center)
找到这个文件 startup 然后添加进去,添加启动文件
方法 2. 改变启动声明形式(我自己取得名字)
如果本身有启动文件start.s ,在启动文件正确的条件下,进入
keil上方工具栏
![在这里插入图片描述](https://img-blog.csdnimg.cn/55360c586fb64d55acd6afb51a425bae.png#pic_center)
进入 linker
![在这里插入图片描述](https://img-blog.csdnimg.cn/415d838630394c31abce02425ceb449c.png#pic_center)
取消 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.
![在这里插入图片描述](https://img-blog.csdnimg.cn/7fb4a4a5ee1a4c0784d7daf85fc61e95.png#pic_center)
问题分析:
无法编译的问题,表面提示是版本太低,可以尝试更新版本,但是很麻烦
但实际上可以看到是 ARM - Compiler 的问题,然后找到keil的 arm -compiler
解决方式
这个在哪呢?
keil上方工具栏
![在这里插入图片描述](https://img-blog.csdnimg.cn/55360c586fb64d55acd6afb51a425bae.png#pic_center)
点击第一个的魔法棒,看到标签页
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ab712db4c654847b14f51a6bd5f0c21.png#pic_center)
选择target,里面看到右边
![在这里插入图片描述](https://img-blog.csdnimg.cn/b607f0e4c7174832a4cfa9bca747fde2.png#pic_center)
看到这个标题了无 ?
arm compiler ,然后这里调整一下
![在这里插入图片描述](https://img-blog.csdnimg.cn/b7732b020f4742caa44be2d7d6eb1784.png#pic_center)
就可以了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)