项目场景临时接手一个MCU为GD32F305的工程在编译时发生了报错。问题描述1. 拿到工程后打开鼠标点击Rebuild键重编译工程。2. 编译报出个65个错误。3. 错误类型error: #35: #error directive: Unknown compiler.#error Unknown compiler.它的意思是在编译链接cmsis_compiler.h时不能进入正确的宏条件判断于是提示报错。进入了 下面的宏条件。原因分析因为是编译问题我们从编译链路分析原因。编译链路编译进行中--》打开头文件gd32_f30x.h---》打开头文件core_cm4.h---》打开头文件cmsis_compiler.h---》判断当前MDK的编译器版本编译内核板级支持包。原因如下1. 打开的头文件core_cm4.h是打开Keil APP安装的内核板级支持包CMSIS 6.1.0中的文件。2. 当前工程 Opetions for Target中Target选择的编译器版本ARMCC 5.06。3. 在CMSIS 6.1.0中的cmsis_compiler.h中会对当前的编译器版本ARMCC进行版本判段如下 图版本判断不过最终编译报错。解决方案1. 不使用Keil App安装的CMSIS 6.1.0作为板级支持包。2. 使用工程中的板级支持包具体是将工程中的CMSIS板级支持包的文件路径添加到 Opetions for Target中C/C的Include Paths中。这样一来当工程编译时就会打开工程中的core_cm4.h等头文件而不会发生报错。3. 文件路径备注工程中的CMSIS是从GD DEMO移植来的这种DEMO一般不依赖KEIL安装的CMSIS。
MDK工程编译报错-error: #35: #error directive: Unknown compiler. #error Unknown compiler.
项目场景临时接手一个MCU为GD32F305的工程在编译时发生了报错。问题描述1. 拿到工程后打开鼠标点击Rebuild键重编译工程。2. 编译报出个65个错误。3. 错误类型error: #35: #error directive: Unknown compiler.#error Unknown compiler.它的意思是在编译链接cmsis_compiler.h时不能进入正确的宏条件判断于是提示报错。进入了 下面的宏条件。原因分析因为是编译问题我们从编译链路分析原因。编译链路编译进行中--》打开头文件gd32_f30x.h---》打开头文件core_cm4.h---》打开头文件cmsis_compiler.h---》判断当前MDK的编译器版本编译内核板级支持包。原因如下1. 打开的头文件core_cm4.h是打开Keil APP安装的内核板级支持包CMSIS 6.1.0中的文件。2. 当前工程 Opetions for Target中Target选择的编译器版本ARMCC 5.06。3. 在CMSIS 6.1.0中的cmsis_compiler.h中会对当前的编译器版本ARMCC进行版本判段如下 图版本判断不过最终编译报错。解决方案1. 不使用Keil App安装的CMSIS 6.1.0作为板级支持包。2. 使用工程中的板级支持包具体是将工程中的CMSIS板级支持包的文件路径添加到 Opetions for Target中C/C的Include Paths中。这样一来当工程编译时就会打开工程中的core_cm4.h等头文件而不会发生报错。3. 文件路径备注工程中的CMSIS是从GD DEMO移植来的这种DEMO一般不依赖KEIL安装的CMSIS。