KeilIDE背后的命令

1、IDE是什么

(1)IDE指集成开发环境(Integrated Development Environment)。 我们开发STM32F103等单片机程序时使用是Keil就是一种IDE。

(2)使用IDE,很容易操作,点点鼠标就可以完成:

  • 添加文件
  • 指定文件路径(头文件路径、库文件路径)
  • 指令链接库
  • 编译、链接
  • 下载、调试

2、IDE背后是命令

2.1、Create Batch File(创建批处理文件)

(1)勾选Create Batch File

(2)生成 led_c.BAT文件

  • ArmCC:C编译器;ArmAsm:汇编器;ArmLink:链接器

  • --Via 表示从一个中间文件(.__i)读取编译参数,这个文件是 Keil 自动生成的,里面包含了头文件路径、宏定义、优化等级等

    SET PATH=D:\Keil_v5\ARM\ARMCC\Bin;C:\Program Files (x86)\Common Files\Oracle\Java\java8path;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;D:\VMware\VMware Workstation\bin;C:\Program Files\Common Files\Siemens\Automation\Simatic OAM\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\dotnet;D:\Git\cmd;D:\TortoiseGit\bin;D:\Bandizip;C:\Users\zjd\AppData\Local\Microsoft\WindowsApps;D:\Microsoft VS Code\bin;
    SET ARMCC5_ASMOPT=--diag_suppress=9931
    SET ARMCC5_CCOPT=--diag_suppress=9931
    SET ARMCC5_LINKOPT=--diag_suppress=9931
    SET CPU_TYPE=STM32F429IGTx
    SET CPU_VENDOR=STMicroelectronics
    SET UV2_TARGET=led_c
    SET CPU_CLOCK=0x00B71B00
    "D:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\main.__i"
    "D:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\start._ia"
    "D:\Keil_v5\ARM\ARMCC\Bin\ArmLink" --Via ".\Objects\led_c.lnp"
    "D:\Keil_v5\ARM\ARMCC\Bin\fromelf.exe" ".\Objects\led_c.axf" --i32combined --output ".\Objects\led_c.hex"

这段脚本就是 Keil MDK 自动生成的"命令行构建流程" ,它用 ARMCC 工具链完成编译、汇编、链接、生成 HEX 的全过程,不需要打开 Keil IDE,适合自动化构建。

(3)main.__i文件、start._ia文件、led_c.lnp文件中存放着编译、汇编、链接的参数。将参数展开就可以通过命令行实现程序的编译、汇编和链接。

(4)注意

  • 使用GitBash执行命令的话,由于GitBash采用类似Linux的文件路径表示方法(比如 /d/abc,而非 d:\abc),命令行中windows格式的路径名要加上双引号,比如".\objects\main.o"
  • 使用dos命令行执行命令的话 不需要加双引号。

(5)在某个Keil工程所在目录下,打开命令行执行指令:

编译main.c

编译start.s,无错误无警告时不输出任何内容。

链接

2.2、编译C和C++时的参数

3、有两套主要的编译器

(1)armcc

  • ARM公司的编译器
  • Keil使用的就算armcc

(2)gcc

  • GNU工具链
  • Linux等开源软件经常使用gcc
相关推荐
·present·5 小时前
CSAPP(Bomb lab)
c语言·c++
szxinmai主板定制专家6 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
HQB20268 小时前
屹晶微电子 EG1130|2‑24V 输入 / 最高 28V 输出 内置 MOS 异步升压 DC‑DC|SOT23‑6|摄像头 / 车充 / 电池充电电源
嵌入式硬件·硬件工程
wuminyu10 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
泛凡(Linyongui)10 小时前
基于 CW32L010 的智能厨卫调温旋钮方案--低成本 EC21 编码旋钮全解析
单片机·嵌入式硬件·c#
十年磨一剑~10 小时前
Linux 内核中断处理机制与软硬件协同流程
linux·嵌入式硬件
糖糖单片机设计11 小时前
基于单片机的热水器节能控制系统
单片机·嵌入式硬件
数字新视界12 小时前
数字孪生技术赋能智能化转型与创新实践
嵌入式硬件·物联网·系统架构·机房管理·动力与环境监控系统
HQB202612 小时前
屹晶微电子 EG1195|10‑120V/10A+ 外置 MOS 异步降压控制器|ESOP‑8|电动车转换器 / 快充 / 工业电源
嵌入式硬件·硬件工程
图灵-M13 小时前
【数据结构】静态 & 动态顺序表
c语言·数据结构·笔记