FMT-Firmware Windows下SCons编译流程记录

FMT源码获取

git clone https://github.com/Firmament-Autopilot/FMT-Firmware.git --recursive --shallow-submodules

编译工具安装

1.ARM交叉编译器
随便一个版本都可以,我这里使用的是GNU Arm Embedded Toolchain\10 2021.10
这部分安装教程很多,这里不再赘述,总之确保编译器环境变量设置正确即可。
打开cmd终端输入指令测试安装是否成功:

arm-none-eabi-gcc -v

若输出类似如下则为安装成功:

gcc version 10.3.1 20210824 (release) (GNU Arm Embedded Toolchain 10.3-2021.10)

2.SCons
这个是基于Python的一个工具,所以使用pip安装即可:

pip install scons

打开cmd终端测试是否安装成功:

scons

若有如下类似输出表示安装成功:

scons: *** No SConstruct file found.

编译准备

对于FMT,不在项目根目录进行编译,而是进入target要编译对应飞控的目录下编译:

随便选一个即可。
例如我们进入到:FMT-Firmware\target\pixhawk\fmu-v2
首先需要修改rtconfig.py文件:
EXEC_PATH = 'your-compiler-path'修改为你的编译器路径
例如我这里设置为:

EXEC_PATH = r'C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin'

随后,在文件末尾地方添加一个CFLAGS:

CFLAGS += ' -DHAVE_SIGVAL -DHAVE_SIGEVENT -DHAVE_SIGINFO'

添加完毕之后大概是这个样子:

CXXFLAGS = CFLAGS
CFLAGS += ' -std=c99'
CXXFLAGS += ' -std=c++14'

CFLAGS += ' -DHAVE_SIGVAL -DHAVE_SIGEVENT -DHAVE_SIGINFO'  # 20250604 Wakkk Add

POST_ACTION = OBJCPY + ' -O binary $TARGET build/fmt_' + BOARD + '.bin\n' + SIZE + ' $TARGET \n'

添加这部分的原因是处理一些因为工具链版本高导致的编译错误,例如:

error: redefinition of 'struct sigevent'
error: conflicting types for 'siginfo_t'
error: redefinition of 'union sigval'

具体原因详见:https://blog.csdn.net/notMine/article/details/108263638

编译

scons

或者多核编译,这里用16线程:

scons -j16

编译结果:

posted @ 2025-06-04 17:15  LGQ_Wakkk  阅读(99)  评论(0)    收藏  举报