keil5一开始编译文件总是报错
error: #3092: anonymous unions are only supported in --gnu mode, or when enabled with #pragma anon_unions
错误:匿名联合仅在--gnu模式下支持,或者在使用#pragma anon_unions时启用。
于是我在报错的文件里都添加了
#pragma anon_unions
也可以在魔法棒的C/C++里的把misc controls 那一栏填为--gnu
另外一个就是头文件前有个红叉❌。报上面那个错误,不过上网查,这种问题也不算错误,放着不管就行。这个我的解决方法是把路径的名字全改为英文。
这样虽然上面的报错都解决了,但也因此又报了新的错误。
Error: L6079E: Subtool invocation error: Error executing armcc. 2??|?3ɡ£
Error: L6636E: Pre-processor step failed for
Error: L6372E: Image needs at least one load region.
这三个错误就像双胞胎一样,只要编译文件就有。然后上网得知这个是MDK编译器的问题,然后又去看同学的keil5,确实是编译器那里的问题。我的魔法棒里显示的“C/C++”,而别人是显示“C/C++(AC6)”,我以为是我的keil5版本即使重装一次还是版本低了,我就用别人的安装包再重装第二次(MDK也重装了一次,这时我才发现keil5必须要安装MDK才能编译及各种使用,要不然界面的图表都是灰的,而之前我一直不知道MDK有啥用),然而还是不行,就是不懂为啥他的界面有编译器版本选择,而我的只有,旧版本的编译器,没得选。。
关于编译器问题,这个链接只是用来告诉你不同编译器是有差别的。其他的没啥。
最后我就想怎么下载最新的编译器,并导入到我的keil5中。
然后又发现了一个问题,我的ARM文件夹下没有ARMCLANG,报了下面那个错误,这个文件,我的第一反应是到官网下一个,但我的直觉告诉我,不要去官网搞资源,去CSDN查,更快更香。
然后我终于找到了一个绝世好文章,MDK提供的编译器的版本问题。
于是我想到我的电脑里确实有好几个版本的MDK,于是我就打算重新安装一下,结果居然就TMD成功了,,,,原来那个编译器版本问题就是因为之前跟着视频下的MDK一直是旧版本的,只有 ARM Compiler 5.06 ,但是缺少了 ARM Compiler 6.6。现在所有文件都可以正常编译使用了。
综上,所有的所有的所有的所有的所有的所有的所有的问题都是源自于你的keil5版本不够,或者你的MDK版本不够。
以上的所有问题都是表象,真正的问题就是你的版本问题,魔法棒的设置基本都不需要改,默认的就行。
OVER