出现这个问题是因为要使用老版本compiler工具,下载流程借鉴博客【KEIL】keil MDK for ARM无法编译老版本程序问题解决方案_mdk keil社区版5.06失败-CSDN博客
在其他博客中偶然看到安装路径最好安装在ARM目录下新建一个compiler文件夹,不然会引发证书问题,我们这篇博客的目的就是去探究,会引发怎样的问题,为什么会引发这样的问题,怎么去解决这个问题。
首先打开一个工程文件,为了对比两种情况产生的问题博主在keil5的目录下存放一个compiler目录,同时也在ARM下存放了一个compiler目录。
我们先用keil文件下的compiler编译文件
前四步用来配备compiler,选择不同文件夹目录下的compiler。
选择好compiler后我们编译自己的工程
从编译结果看出有8个错误
此时我们换ARM下的compiler来编译
编译结果如下
可以看到并没有报错,那是什么导致了同一个编译器,两种不同的编译结果呢?
1.1.1 报错类型查看
除去第一个startup_stm32f103xe.s文件报错有点不一样,Error:A955E:Failed to check out a license.后面的报错就是compiling xx.c文件后同类型报错,7个错误的报错是一样的Error:C955E:Failed to check out a license.至于为什么同样的错误,错误编码不一样还有待考究。回到错误本身,他的意思是查询许可证失败。
1.2.1 为什么会查询许可证失败
网上给出的解决方案有很多,但大多数报这个错是因为许可证过期导致的,我们由结果往前推明显不是这个原因,从句子上来看,查询许可证失败可能由几方面导致,1.许可证有问题 2 查询方式有问题 3 电脑有问题。我们根据对比可以排除第三个电脑有问题。那么是不是许可证有问题呢?我们可以选择去查看一下许可证。
结果发现能查询到
那就不是license的问题。那就是check out工具的问题,有两者比对可知check out工具的功能是没有问题的,那我们就大胆假设,是权限问题,在keil目录下的工具没有去查询license的权限。
1.2.3 为什么只有放在ARM文件下的工具有查询license的权限呢
我又尝试把compiler文件夹放在keil的其他的子目录下尝试能否执行,全部都没有权限去查找,那为什么只有放在ARM的目录下才有权限呢?
全部失败
这个问题我想留在后面,挖一个坑,我在网上还没能查到特别详尽的资料来对其进行解释,如果各位有相关的资料可以@我。