首页 > 其他分享 >如何用gcc+makefile改造STM32Keil项目

如何用gcc+makefile改造STM32Keil项目

时间:2023-11-16 16:48:16浏览次数:40  
标签:文件 gcc STM32Keil 项目 make makefile 编译

1、环境配置,本地需要安装gcc+make环境,将w64devkit中的bin路径放入环境变量
D:\download\storage\arm_gcc\w64devkit

然后再cmd中输入gcc -v和make -v测试gcc和make环境是否可以正常运行,如果有下面这种显示就说明gcc和make环境配置好了

2、获取芯片的启动文件文件和链接文件,stm32可以通过STM32CubeMX软件获取
打开软件后,点击File创建一个新项目

根据自己芯片的型号选择对应的芯片,双击进入工程,

因为我们是改造Keil项目,代码环境在keil已经写好,不需要通过该软件生成,我们只是通过该软件获取对应的.s和.ld文件所以这里只需要在Project Manager中和Project设置好项目路径和项目名,最重要的是Toolchain/IDE这里一定要选择Makefile,这样才会生成gcc项目

然后再点击Generate code就会自动生成项目,如果是第一次生成会比较慢需要下载对应的pack包,有时候会生成失败因为网络问题,有条件可以用梯子,没有条件多试几次。

3、然后去项目路径下打开cmd界面使用make命令就会编译生成对应的bin和elf文件,这个时候证明我们的makefile和.s以及.ld文件都可以正常使用,然后我们将.s、.ld、makefile移植到我们的新项目中

4、新建一个文件夹放入生成的makefile,.s,.ld文件

5、然后将Keil项目中的代码文件放入gcc项目下,keil中的project文件夹没有用可以直接删除

6、修改makefile文件,添加新项目中.c文件和.h文件的路径,主要修改C_SOURCES中的.c文件路径确保makefile可以编译所有的.c文件,然后修改C_INCLUDES下的目录路径,该路劲存放的是所有的.h文件(填写自己项目下.h文件的路径),注意每个目录都需(大写的i)要-I后面添加路径,-I是让makefile去指定的目录下寻找头文件,到这里基本环境就配置完成

7、可能用gcc编译的时候有一个文件core_m3.c文件无法编译通过,可以直接不编译这个文件即可,然后如果在keil中有定义宏需要再makefile中添加宏,到此环境就已经配置完成,然后在cmd中使用make命令就可以编译出bin和elf了

8、编译出来的elf还可以通过jlink工具使用gdb调试elf文件

 

标签:文件,gcc,STM32Keil,项目,make,makefile,编译
From: https://www.cnblogs.com/lq-gd/p/17836638.html

相关文章

  • $(CURDIR)/Makefile Makefile: ; 的作用
    $(CURDIR)/MakefileMakefile:; 在这个Makefile中,$(CURDIR)/MakefileMakefile:;是一个特殊的语法,它被用于取消Makefile默认的隐含规则。这个语句的作用是阻止Make命令在当前目录下自动查找和使用默认的隐含规则来构建目标。通常情况下,如果没有指定如何构建某个目标,Make命令......
  • 【GCC】windows环境编译dll文件
    使用如下指令生成动态库:gcctest.c-I./inc-fPIC-shared-olibtest.dll参数解释:-I:添加头文件搜索目录-fPIC:生成位置无关的代码,在编译动态库的时候需要使用该选项-shared:表明生成一个共享对象,也就是动态库......
  • 搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板
    STM32F407-GCC-TemplateArm-none-eabi-gcc+Makefile+OpenOCD+CMSIS-DAP+Vscode工程模板一、本次环境搭建所用的软硬件1)WindowsorLinux(本文以Windows为主)2)JLink、Daplink、Wch-Link烧录器3)GNUArmEmbeddedToolchain交叉编译器4)Mingw-w64GCCforWindows645)Debug......
  • Makefile
    代码Version1点击查看代码hello:main.cppprinthello.cppfatorial.cppg++-ohellomain.cppprinthello.cppfactorial.cpp代码Version2点击查看代码CXX=g++TARGET=helloOBJ=main.oprinthello.ofactorial.o$(TARGET):$(OBJ)$(CXX)-o$(TARGET)......
  • Makefile
    0背景在工作中,经常会与makefile打交道,但是有很多的时候,不明白其中的语法意思,这里主要记录一下常遇到的一些语法。一、测试模板很多时候,我们在理解一个知识的时候,有点难理解,我们可以自己写个测试文件来测试下,看看效果,加深理解。$(warningwarning:'thisisaloginfo')TAR......
  • gcc 为什么在arm 开发板上 就是编译的arch64 , 在虚拟机中编译的就是 x86
     在开发板上,编译命令如下,并且程序也是可以运行的。  看看原因。    所以在板子上编译的是aarch64架构的。......
  • arm-eabi-none-gcc和cmake安装
    arm-none-eabi-gcc和cmake都非常重要,它们分别用于ARM架构的编译和构建。首先,arm-none-eabi-gcc是一个为ARM架构编译C/C++代码的编译器。安装它可以让你在ARM架构上编译和运行C/C++代码。其次,cmake是一个跨平台的自动化构建工具,它使用一个名为CMakeLists.txt的文件来描述构建过程。......
  • 自动化构建工具make/makefile详解
    一、工具介绍1.1为什么需要使用自动化项目构建工具呢在我看来,在平时写较少代码,只有1个源文件的时候,用make和不用make感觉差别不大,但是当项目源文件一多,需要一个个的去输入gcc进行编译,显然是十分麻烦的。所以make这个工具可以极大的提高项目完成后的测试工作。1.2make/makefile介绍......
  • centos7 gcc版本升级--便捷方法
    问题提出:  虚拟机下面安装的centos7系统,默认gcc是4.8.5版本。  想升级到最新版本,但是又不想花很多时间去编译源码。有没有一种更加便捷的升级方法呢?   升级步骤: 1.安装scl仓库sudoyuminstallcentos-release-scl2.安装所需版本的GCC:sudoyuminstall......
  • uboot的Makefile添加c文件复制功能--Apple的学习笔记
    一,前言如何能快速知道哪些c被编译到boot了。通过看编译信息,通过看编译完成后的ouput文件夹中的o文件,能否直接copy这些c文件到某个文件夹中,这样搜索看代码定位比较容易。若makefile自己有全部的c路径,那么我做个脚本后处理下,copy这些路径的c即可,另外,makefile居然有复制o文件,那么我只......