keil常见编译问题和解决

1. 场景1a. 现象:b. 问题分析: 翻译:符号未定义c. 解决方式场景一:才源代码和头文件中去定义,声明场景二:把原来的源文件和头文件都先删除,之后编译一下,再重新定义函数和头文件声明

2. 场景2a. 现象:问题分析解决方法 1. 添加启动文件方法 2. 改变启动声明形式(我自己取得名字)

3. 场景3:报错现象:问题分析:解决方式

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 ,然后这里调整一下

就可以了

问题描述:如果c文件无法编译,编译按钮呈现灰白色,如下图:

问题解决:可以检查一下是否将文件加入了组中,如图所示:

?如果组中没有该文件,即可在组中加入,并尝试编译。

keil编译器出现问题,根据提示意思就是ARM编译器选择不对的问题。

*** Target 'Printf' uses ARM-Compiler 'V5.06 update 6 (build 750)' which is not available.*** Please review the installed ARM Compiler Versions:? ?'Manage Project Items - Folders/Extensions' to manage ARM Compiler Versions.? ?'Options for Target - Target' to select an ARM Compiler Version for the target.*** Rebuild aborted.Build Time Elapsed:??00:00:00

解决办法点击options of target 在ARM Compiler选项里面选择ARM编译器版本,一般选择默认的就好。

如图