Keil一般使用ARMCC编译MCU工程代码。偶然听说Keil也是支持内嵌GCC编译器的。于是尝试了网上博客所述的一些方法,最终找到了一篇博客
http://blog.csdn.net/lan120576664/article/details/46806991
按照文中所述,发现仍存在一些其他错误,后来又查找了其他相关资料,在这作以总结
一、下载GCC编译器
https://launchpad.net/gcc-arm-embedded/
二、安装GCC
GCC解压到keil的安装目录下面。如下图
三、配置Keil
如下图所示进行相关设置:
Prefix:arm-none-eabi-
Folder:D:keil_MDKKeil_v5ARMGCC (注:这里是刚刚安装的GCC所在位置)
四、配置工程设置
1.配置CC编译规则
注意勾选一下选项,填写规则
Misc Controls : -mcpu=cortex-m3 -mthumb -fdata-sections -ffunction-sections
注:
1.这里我用的cortex-m3,如果你是m4内核就改成4)
2.-mthumb的意义是:使用这个编译选项生成的目标文件是Thumb的
3.-fdata-sections和-ffunction-sections和下文连接规则一起说
2.配置Assembler编译规则
类似前一项
Misc Controls : -mcpu=cortex-m3 -mthumb
3.配置Linker连接规则
这里要添加连接脚本,一般可以在官方提供的固件库包找到类似的
Misc Controls : -Wl,–gc-sections
注:
1.注意这个gc前面是两个短小的“–”,由于博客的问题直接复制会出错
2.-wl, 表示后面的参数 –gc-sections 传递给链接器
3.-fdata-sections和-ffunction-sections和–gc-sections的说明如下
-ffunction-sections和-fdata-sections会使编译器为每个function和data item分配独立的section。 –gc-sections会使连接器删除没有被使用的section。
连接操作以section作为最小的处理