ARM架构与编程——4.Makefile

参考: <ARM架构与编程> 韦东山

Makefile的引入及规则

一、准备工作

1.1 IDE背后的命令

1.1.1 IDE是什么

IDE指集成开发环境(Integrated Development Environment)。我们开发STM32F103等单片机程序时使用是keil就是一种IDE。
使用IDE,很容易操作,点点鼠标就可完成:

  • 添加文件
  • 指定文件路径(头文件路径、库文件路径)
  • 指定链接库
  • 编译、链接
  • 下载、调试
1.1.2 IDE的背后是命令

使用keil来演示命令的操作。

注意

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

在某个Keil工程所在目录下,打开Git Bash或者使用Windows命令行,如:
doc_and_source_for_mcu_mpu\STM32MF103\source\02_录制视频时现场编写的源码\01_led_c

  • 编译main.c
    执行命令:
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --c99 --gnu -c --cpu Cortex-M3 -D__EVAL -g -O0 --apcs=interwork --split_sections -I.\RTE\_led_c -I"C:\Users\thisway_diy\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include" -I"C:\Keil_v5\ARM\CMSIS\Include" -D__UVISION_VERSION="527" -DSTM32F10X_HD -o ".\objects\main.o" --omf_browse ".\objects\main.crf" --depend ".\objects\main.d" "main.c"
  • 编译start.S
    执行命令:
"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork -I.\RTE\_led_c -I"C:\Users\thisway_diy\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include" -I"C:\Keil_v5\ARM\CMSIS\Include" --pd "__UVISION_VERSION SETA 527" --pd "STM32F10X_HD SETA 1" --list ".\listings\start.lst" --xref -o ".\objects\start.o" --depend ".\objects\start.d" "start.s"
  • 链接
    执行命令:
"C:\Keil_v5\ARM\ARMCC\Bin\ArmLink" --cpu Cortex-M3 ".\objects\main.o" ".\objects\start.o" --ro-base 0x08000000 --entry 0x08000000 --rw-base 0x20000000 --entry Reset_Handler --first __Vectors --strict --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols --info sizes --info totals --info unused --info veneers --list ".\Listings\led_c.map" -o ".\Objects\led_c.axf"
1.1.3 抛出几个问题
  • 头文件在哪?
  • 库文件在哪?库文件是哪个?
  • 源文件有哪些?
  • 源文件怎么编译?可以指定编译参数吗?
  • 多个源文件怎么链接成一个可执行程序?
  • 有a.c, b.c, c.c,我只修改了a.c,就只需要编译a.c,然后在链接:怎么做到的?

要解决以上几个问题,需要了解掌握命令行;以后再探讨

1.1.4 两套主要的编译器
  • armcc
    • ARM公司的编译器
    • keil使用的就是armcc
  • gcc
    • GNU工具链
    • Linux等开源软件经常使用gcc

后面以GNU工具链为例讲解,所涉及的知识可以平移到armcc上。

1.2 安装CodeBlocks

它是一款基于GCC的windows IDE,可以用来开发C/C++/Fortran。
官网地址:http://www.codeblocks.org/
在这里插入图片描述
或者通过提供的GIT仓库下载:git clone https://e.coding.net/weidongshan/noos/cortexA7_windows_tools.git
下载到自己指定的目录,然后安装
安装完之后需要配置环境变量,在Path环境变量中添加自己安装文件下的bin目录,如:C:\Program Files\CodeBlocks\MinGW\bin

  • 命令行示例:
    启动Git Bash,编译程序hello.c:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值