news 2026/9/25 3:01:34

F´ 飞行软件框架安装指南:环境准备、工具链部署与故障排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
F´ 飞行软件框架安装指南:环境准备、工具链部署与故障排查
  • 嵌入式
  • 系统编程

【免费下载链接】fprime

F´ - A flight software and embedded systems framework

项目地址:https://gitcode.com/gh_mirrors/fpri/fprime
点击查看免费下载

本指南面向想要在 Linux 或 macOS 上快速搭建 F´(F Prime)飞行软件与嵌入式系统框架开发环境的个人开发者和研究人员,系统介绍从系统依赖、Python 虚拟环境、核心仓库克隆到工具链安装、安装验证与常见问题修复的完整流程。读完本文,你将能够独立完成一次可用的 F´ 环境部署,并通过构建参考应用Ref与启动 GDS 图形界面来确认 Autocoder 和地面站工具链均已正确安装。

F´ 的官方安装指南位于 docs/INSTALL.md,本文以其为骨架,并结合仓库内的依赖清单、构建脚本与 CI 测试用例对每一步给出源码级佐证。对于有特殊需求的大型项目,官方指出可能需要在本文流程基础上进一步扩展,本文先解决"从零到可用"这一核心问题。

安装前的环境要求

在开始安装之前,需要先确认宿主机的软硬件环境满足 F´ 的基本依赖。官方列出的硬性要求如下:

依赖项说明
操作系统Linux 或 macOS
git用于克隆 F´ 核心仓库
CMake 3.16 或更新命令行工具(cmake)必须位于系统 PATH 中
C/C++ 编译器Clang 或 GNU 工具链(如gcc/g++)
Python 3.7+同时需要虚拟环境(venv)与 PIP 支持

如果宿主机无法满足上述任意一项,官方建议改用虚拟机(例如 VirtualBox)继续安装。

从仓库的setup.py可以看到,F´ 的 Python 工具栈在声明层面对 Python 版本的下限要求正是 3.7(python_requires=">=3.7"),其classifiers中显式列出了对 Python 3.7、3.8、3.9、3.10 的官方支持范围,与安装指南的 "Python 3.7+" 完全一致。此外,setup.py将自身定义为 "fprime meta-package",其职责是"把 fprime-fpp、fprime-tools、fprime-gds 三个子包以经过测试的兼容版本组合拉入用户环境",这是理解整个安装流程的关键——安装 F´ 本质上是在安装一套经过版本配对的 Python 工具集。

提示:不同操作系统还有各自的补充注意事项,详见文末的故障排查章节。

第一步:创建 Python 虚拟环境

F´ 的工具链(FPP 编译器、fprime-util构建工具、GDS 地面数据系统)都是以 Python 包形式通过 PIP 分发的。由于 Python 常被操作系统本身大量使用,为避免污染系统环境、也避免系统自带包版本与项目依赖冲突,官方强烈建议在虚拟环境中运行 F´ 的 Python 工具。

虚拟环境可以创建在任何用户拥有读写权限的路径下,本指南使用$HOME/fprime-venv作为示例:

python3 -m venv $HOME/fprime-venv . $HOME/fprime-venv/bin/activate pip install -U setuptools setuptools_scm wheel pip

三个需要说明的细节:

  1. 激活环境:. $HOME/fprime-venv/bin/activate必须在每一个想要使用虚拟环境的新终端中重新执行,该命令只是为当前 Shell 进程注入环境变量,不会跨终端生效。
  2. 升级 setuptools_scm:setup.py中通过use_scm_version从 Git 标签自动推导fprime元包的版本号,因此需要较新的setuptools_scm才能正常工作。
  3. 升级 pip 与 wheel:保证后续安装预编译 wheel 包与解析依赖时不会因版本过旧而失败。

第二步:克隆 F´ 核心仓库并安装工具集

安装 F´ 首先需要通过 Git 克隆核心仓库,这一步会拉取框架本身及全部 C++ 源码。克隆完成后,使用仓库自带的requirements.txt安装全部工具及其经过测试的固定版本。

git clone <fprime 核心仓库地址> pip install -r fprime/requirements.txt

注意:当切换 F´ 版本时,务必重新执行pip install -r fprime/requirements.txt,以确保工具版本与新的框架版本配套(CI 脚本 ci/bootstrap.bash 中也采用了类似的安装方式)。

仓库根目录下的 requirements.txt 是一份完整的固定版本(pinned)依赖清单,其中与 F´ 直接相关的核心工具包括:

包名版本(当前仓库锁定)作用
fprime-fpp1.2.0FPP(F Prime 规划语言)编译器
fprime-tools3.1.2a1fprime-util构建/生成命令行工具
fprime-gds3.1.5a1F´ 地面数据系统(GDS)
argcomplete1.12.3命令行 Tab 自动补全支持库
pytest6.2.5集成测试与单元测试运行
Cheetah3 / lxml / pyzmq / Flask 等—代码生成模板、XML 解析、通信与 GDS 后端依赖

这份清单恰好印证了 setup.py 中install_requires对三个子包的最小版本约束(fprime-tools>=v3.1.0a2、fprime-gds>=v3.1.0a2、fprime-fpp>=v1.0.2b12):无论走"一条命令装全套"还是"单独安装子包",最终都应落在相互兼容的版本组合上。

第三步:验证安装是否成功

安装完成后,可以通过两条命令快速验证:先验证 Autocoder(代码自动生成器)与构建系统,再验证 GDS 地面站组件。如果某个组件没有正确安装,对应的命令会直接失败。

验证 Autocoder:构建 Ref 参考应用

Ref是仓库中随附的参考部署(Reference Deployment),包含了自定义组件与完整拓扑,是最合适的"冒烟测试"目标:

cd Ref fprime-util generate fprime-util build --jobs "$(nproc || printf '%s\n' 1)"

其中fprime-util generate负责生成 CMake 构建系统,fprime-util build --jobs ...执行并行编译;$(nproc || printf '%s\n' 1)会取 CPU 核数作为并行任务数,在没有nproc命令的系统上则回退为 1。

从源码结构看,Ref/CMakeLists.txt 是整个构建的组织核心:它先include("../cmake/FPrime.cmake")引入框架核心构建规则,再通过add_fprime_subdirectory逐个加入PingReceiver、RecvBuffApp、SendBuffApp、SignalGen四个参考组件与Top拓扑目录,最后由register_fprime_deployment()将Ref注册为可部署应用,并对部署可执行文件启用-Wall、-Wextra、-Werror等一系列严格编译选项。CI 中的 ci/tests/fputil.bash 也是以完全相同的fprime-util generate/fprime-util build序列对多个部署进行回归验证的,可见这是官方认可的标准验证路径。

验证 GDS:启动 HTML 图形界面

Autocoder 构建成功后,Ref目录下会生成包含预构建字典(dictionary)与二进制文件的构建产物(build-artifacts),GDS 依赖这些产物运行:

fprime-gds -g html -r <path to fprime checkout>/Ref/build-artifacts

该命令以 HTML 界面模式启动 GDS,并通过-r指定构建产物根目录。Ref必须包含对应系统的预构建字典与二进制文件,这通常由上一步的 Autocoder 安装测试保证(即需要先具备可用的 Autocoder 安装)。

高级选项

以下选项适用于需要进一步定制环境的用户,它们通常要求对 F´ 工具与版本机制有一定了解。

启用命令行 Tab 自动补全

F´ 的多个命令行工具支持 Tab 自动补全,详细操作见 docs/UsersGuide/user/autocomplete.md。该文档基于argcomplete库(正是 requirements.txt 中锁定的argcomplete==1.12.3)实现,支持 bash、zsh、fish、tcsh 等常见 Shell,目前适用于fprime-cli工具,可补全子命令名、选项、文件路径乃至所连 F´ 实例的可用命令。

其核心激活方式有两类:

  • 手动激活(每个新 Shell 执行一次):
    • bash:eval "$(register-python-argcomplete fprime-cli)"
    • zsh:先autoload -U bashcompinit && bashcompinit,再执行与 bash 相同的eval ...命令
    • fish:register-python-argcomplete --shell fish fprime-cli | source
    • tcsh:eval `register-python-argcomplete --shell tcsh fprime-cli`
  • 随虚拟环境激活:将上述输出追加到虚拟环境的激活脚本中(如 bash/zsh 为$VIRTUAL_ENV/bin/activate,fish 为activate.fish,tcsh 为activate.csh),之后每次激活环境即自动启用补全;该方式会修改 Python 管理的虚拟环境文件,若后续出现异常,重装 F´ 并跳过本节即可恢复。

单独安装各工具

F´ 的每个工具都可以通过对应的子包单独安装,但必须注意保持版本兼容:

工具对应包
fpp(FPP 编译器)fprime-fpp
fprime-util(构建工具)fprime-tools
GDS(地面数据系统)fprime-gds

注意:fprime-gds依赖fprime-tools,建议直接安装fprime-gds,让 PIP 自动拉取兼容版本的fprime-tools。

安装可选组件

部分包附带可选组件,通过方括号中的 extra 名称安装:

包说明
fprime-tools[dev]安装用于开发 F´ Python 代码的开发工具
fprime-gds[uart-adapter]安装 GDS 的 UART 通信适配器
fprime-gds[test-api-xls]为集成测试框架安装 Excel 日志记录支持

示例:

pip install fprime-gds[uart-adapter]

这些组件会引入大量额外依赖库,并非所有系统都支持,因此按需安装即可。

故障排查

本节汇总了 F´ 安装过程中的常见问题与已知解法。

fprime-util: command not found

如果在虚拟环境中遇到"命令找不到",最常见的原因是新终端没有重新激活虚拟环境。请先执行:

. $HOME/fprime-venv/bin/activate

如果是在不使用虚拟环境的情况下安装,PIP 有时会把用户工具安装到$HOME/.local/bin,此时需要将该目录加入 PATH。

Helper script 'fpp-redirect-helper' exited with reason: Permission denied

该错误通常意味着辅助脚本cmake/autocoder/fpp-wrapper/fpp-redirect-helper丢失了可执行权限。从源码看,cmake/autocoder/fpp-wrapper/fpp-redirect-helper 是一个 shell 脚本,其作用是:将第一个参数作为 stdout 输出文件,把剩余参数拼成命令执行并把其标准输出重定向到该文件——它由 FPP 包装器在代码生成阶段调用,因此必须可执行。

验证与修复步骤:

cd fprime/cmake/autocoder/fpp-wrapper/ ls -l chmod 700 fpp-redirect-helper

Ubuntu、Debian 系系统的 Java 与 Python PIP 问题

Ubuntu 及多数 Debian 衍生版本默认的 Python 3 安装并不包含 PIP 包。可在这些系统上执行:

sudo apt install git cmake default-jre python3 python3-pip python3-venv

之后即可正常运行后续安装。

macOS 上 CMake 命令找不到

如果直接从 CMake 官网安装(而非使用 Homebrew 或 MacPorts),其命令行工具默认不在 PATH 中。最快的修复方式是在终端执行:

sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install

该命令会为系统安装 CMake 命令行工具。

系统 Python、系统包与 python3 的关系

许多操作系统会通过包管理器(apt、yum 等)提供 Python 的 PIP 包。多数 Python 项目并不推荐使用这类系统包,因为其版本往往与项目依赖的指定版本不一致。因此官方建议在虚拟环境中安装 F´,这一做法在本文第一步中已采用。

macOS 上 Python 3.6+ 的 SSL 证书错误

Python 3.6+ 自带的 openSSL 需要访问 macOS 的根证书。若安装 F´ 时出现如下错误:

Failed find expected download: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

请在 macOS 终端执行以下命令安装所需证书:

cd /Applications/Python\ 3.X/ ./Install\ Certificates.command

执行完成后重新尝试安装 F´ 即可。

小结

遵循本指南的流程:确认系统依赖 → 创建 Python 虚拟环境 → 克隆仓库并安装固定版本工具集 → 通过Ref构建与 GDS 启动验证安装,即可完成一套标准可用的 F´ 开发环境。对于更复杂的项目需求,可进一步阅读 docs/UsersGuide/user/fprime-util.md 了解构建工具的更多用法(单元测试、平台参数、部署选择等),或参考 docs/UsersGuide/user/autocomplete.md 提升命令行操作效率。

  • 嵌入式
  • 系统编程

【免费下载链接】fprime

F´ - A flight software and embedded systems framework

项目地址:https://gitcode.com/gh_mirrors/fpri/fprime
点击查看免费下载

相关推荐

上一篇:Open Assistant 数据上手:用 Hugging Face datasets 与 treelib 挖掘 OASST1 对话树结构
下一篇:从Atom到现代代码编辑器:技术架构演进与迁移决策矩阵分析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 3:01:08

OpenShift Origin 容器化部署与 Sample App 环境准备指南

测试云原生质量保障 【免费下载链接】origin Conformance test suite for OpenShift 项目地址&#xff1a; https://gitcode.com/gh_mirrors/or/origin 点击查看 免费下载 本文基于 origin 仓库中的 container-setup.md 展开&#xff0c;介绍如何以 Docker 容器方式拉起一个自…

作者头像 李华
网站建设 2026/9/25 3:00:18

PySide6+PyInstaller实战:搞怪小程序桌面开发与打包

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华