当前位置: 首页 > news >正文

Buildroot 移植MiniGUI

在这里插入图片描述

在这里插入图片描述

Buildroot 移植MiniGUI

     MiniGUI是一个用于嵌入式系统的轻量级图形用户界面库。要将 MiniGUI 4.0.8 移植到 Buildroot 系统中,通常需要下载并安装几个关键的组件包。虽然具体的版本号可能会有所不同,但一般来说,移植 MiniGUI 需要以下几类包:

  1. 核心库(Core Library): 这是 MiniGUI 的核心部分,提供了基本的窗口系统和绘图功能

  2. 资源文件(Resources): 包含 MiniGUI 所需的各种资源,如位图、图标等。这些资源通常是通过 minigui-res 包提供的。

  3. 第三方依赖库(Third-Party Libraries): MiniGUI 可能依赖于一些其他的库,比如 FreeType(用于字体渲染)、LibPNG(用于处理 PNG 图像)、LibJPEG(用于处理 JPEG 图像)等。确保你已经安装了所有必要的第三方库。

  4. 附加组件(Add-ons): 如果你的应用需要用到 MiniGUI 的高级功能或插件,你还需要下载相关的附加组件。例如,libmgutilslibmgplus 等。

  5. 示例程序(Samples): 虽然不是必需的,但是下载示例程序可以帮助你了解如何使用 MiniGUI 提供的功能,并作为开发参考。

为了将 MiniGUI 4.0.8 成功集成到 Buildroot 中,你需要做的是:

  • 在 Buildroot 中添加 MiniGUI 的配置选项。
  • 下载 MiniGUI 源码以及其依赖项的源码。
  • 根据 Buildroot 的规范编写相应的 Makefile 或者 package recipe 文件来描述如何编译和安装 MiniGUI 和它的依赖项。

Buildroot 有一个非常灵活的包管理系统,需要的包编写自己的 .mk 文件,定义如何下载、配置、编译和安装该软件包。

1. 准备环境

确保开发环境已经安装了 Buildroot 的依赖工具(如 makegccgit 等)。如果是全新环境,可以参考 Buildroot 的官方文档安装必要的软件包。

  • 下载 Buildroot:

    # 官网下载地址
    https://buildroot.org/download.html
  • 选择一个适合目标设备的版本(例如最新的稳定版,或与 MiniGUI 4.0.8 兼容的版本)。

2. 配置 Buildroot

Buildroot 使用配置文件来定义目标系统的组件。为目标设备选择一个默认配置,然后添加 MiniGUI 支持。

  • 加载默认配置:

    make  xxxx_defconfig
  • 打开 Buildroot 的配置界面(集成MiniGUI后):

    # 在增加MiniGUI模块后, 可以使用配置里打开编译配置
    make menuconfig

3. 添加 MiniGUI 4.0.8

Buildroot 默认包列表中可能不包含 MiniGUI,因此需要手动添加 MiniGUI 4.0.8 的支持。MiniGUI 是一个外部包,你需要将其集成到 Buildroot 中。

方法 1:使用外部包

  • 下载 MiniGUI 4.0.8 源码
    从 MiniGUI 官方网站(http://www.minigui.com)或 GitHub(如 VincentWei 的仓库)下载 MiniGUI 4.0.8 的源代码。
    参考下载:
    在这里插入图片描述

    https://minigui.fmsoft.cn/download
    

移植 MiniGUI 需要以下几类包:

  1. 核心库(Core Library): 这是 MiniGUI 的核心部分,提供了基本的窗口系统和绘图功能。
  2. 资源文件(Resources): 包含 MiniGUI 所需的各种资源,如位图、图标等。这些资源通常是通过 minigui-res 包提供的。
  3. mGUtils: 是一个实用工具库,它为 MiniGUI 应用程序提供了一系列的辅助函数和工具,以简化开发过程并提高代码效率
  4. mGPlus: 是 MiniGUI 的高级图形库,它在 MiniGUI 核心库的基础上增加了更多强大的图形处理能力。
  5. MiniGUI Samples: 不是必需的,示例程序可以作为开发参考。

MiniGUI Core Lib (V4.0.8)核心库的目录结构:

minigui
├── 3rd-party
├── AUTHORS.md
├── autogen.sh
├── b_configure.ac
├── build
├── ChangeLog
├── ChangeLog.old
├── clean_license.sh
├── cmake
├── CMakeLists.txt
├── cmake_mgconfig.h.in
├── configs
├── configure.ac
├── doc
├── Doxyfile.procs
├── Doxyfile.sal
├── Doxyfile.ths
├── etc
├── examples
├── GNUmakefile
├── include
├── INSTALL
├── LICENSE
├── LICENSE-POLICY-en.md
├── LICENSE-POLICY-zh.md
├── ltmain.sh
├── m4
├── Makefile.am
├── makefile.msvc
├── makefile.ng
├── make_tarball
├── merge.log
├── minigui.pc.in
├── README
├── README.md
├── RELEASE-NOTES.md
├── rtos
├── rules.make
├── scripts
├── src
└── Version.md
  • 创建 MiniGUI 包定义(增加Config.in minigui.mk)
    buildroot/package/ 目录下创建一个新目录,例如 minigui,然后添加以下文件:

增加 minigui/Config.in

        cat minigui/Config.in config BR2_PACKAGE_MINIGUIbool "MiniGUI"helpMiniGUI is a mature cross-platform GUI system for embedded and smart IoT devices.http://www.minigui.com

增加minigui/minigui.mk

minigui/minigui.mk 
MINIGUI_VERSION = 4.0.8MINIGUI_SITE = $(TOPDIR)/package/minigui
MINIGUI_SITE_METHOD = local
MINIGUI_LICENSE = LGPL-2.1+
MINIGUI_LICENSE_FILES = COPYING
MINIGUI_INSTALL_STAGING = YES
MINIGUI_INSTALL_TARGET = YESMINIGUI_DEPENDENCIES = host-pkgconf libpng jpeg freetype zlibdefine MINIGUI_CONFIGURE_CMDS(cd $(@D); \./autogen.sh; \$(TARGET_CONFIGURE_OPTS) \./configure \--host=$(GNU_TARGET_NAME) \--build=$(GNU_HOST_NAME) \--prefix=/usr \--sysconfdir=/etc \--disable-static \--with-osname=linux \--with-targetname=fbcon \--with-target=fb \--enable-videodfb \--enable-fbcon \--with-runmode=ths \--with-ttfsupport=ft2 \--with-ttfcachesize=512 \--with-zlib=$(STAGING_DIR)/usr \--with-png=$(STAGING_DIR)/usr \--with-jpeg=$(STAGING_DIR)/usr \--with-freetype=$(STAGING_DIR)/usr \--with-ft2-includes=$(STAGING_DIR)/usr/include/freetype2)
endefdefine MINIGUI_BUILD_CMDS$(MAKE) -C $(@D) CFLAGS="$(TARGET_CFLAGS) -D__MINIGUI_LIB__"\CPPFLAGS="$(TARGET_CPPFLAGS) -D__MINIGUI_LIB__ -I$(STAGING_DIR)/usr/include" \LDFLAGS="$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib" 
endefdefine MINIGUI_INSTALL_STAGING_CMDS$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install@echo "Installed files to: $(STAGING_DIR)"
endef$(eval $(autotools-package))

修改将 minigui/Config.in 添加到 package/Config.in 中:
编辑 package/Config.in,在合适的位置添加, 本文中是将其添加在
Target packages → Libraries → Graphics:

        source "package/minigui/Config.in"
  • 启用 MiniGUI(make menuconfig 手动配置)
    再次运行 make menuconfig,在 Target packages → Libraries → Graphics 下找到并启用 minigui
    在这里插入图片描述

方法 2:使用外部树(External Tree)**

如果不想直接修改 Buildroot,可以创建一个外部目录来存放 MiniGUI 的包定义:

  • 创建外部目录(如 myexternal),并按照上述步骤添加 package/minigui/

  • 在 Buildroot 中指定外部树:

    make O=../buildroot-output BR2_EXTERNAL=../myexternal menuconfig

4. 配置图形支持

MiniGUI 需要底层的图形支持(如 Framebuffer)。

5. 构建系统

配置完成后,编译整个系统:

make

编译完成后可以看到输出文件:

ll output/target/usr/lib/libminigui_ths*
lrwxrwxrwx 1 -- --      27 514 14:40 output/target/usr/lib/libminigui_ths-4.0.so.0 -> libminigui_ths-4.0.so.0.0.8*
-rwxr-xr-x 1 -- -- 2164796 514 14:44 output/target/usr/lib/libminigui_ths-4.0.so.0.0.8*
lrwxrwxrwx 1 -- --      27 514 14:40 output/target/usr/lib/libminigui_ths.so -> libminigui_ths-4.0.so.0.0.8*

6. 参考资源

  • Buildroot 手册:https://buildroot.org/docs.html

  • MiniGUI 文档:http://www.minigui.com/en/documents/

  • GitHub 上 MiniGUI 4.0.8 的构建脚本:https://github.com/VincentWei/build-minigui-4.0

  • MiniGUI移植过程

  • 字体名称

  • minigui 的中文字体部署及支持&窗口模态、非模态

相关文章:

  • Python高级进阶:Vim与Vi使用指南
  • 多模态大语言模型arxiv论文略读(七十七)
  • 一站式本地化方案,解决欧洲反向海淘多重难题
  • 【Linux】网络基础与socket编程基础
  • 【中级软件设计师】网络攻击(附软考真题)
  • [Harmony]大文件持久化
  • Spring Boot多数据源配置的陷阱与终极解决方案
  • 2025 年十大网络安全预测
  • 【问题记录】08 MAC电脑,安装HP打印机驱动,提示:此更新需要macOS版本15.0或更低版本
  • 汽车零部件冲压车间MES一体机解决方案
  • CAPL编程系列_04
  • Linux线程互斥锁
  • 【C++】set和multiset的常用接口详解
  • AWS Elastic Beanstalk控制台部署Spring极简工程
  • 【Java ee】关于抓包软件Fiddler Classic的安装与使用
  • React 第四十一节Router 中 useActionData 使用方法案例以及注意事项
  • 观测云产品更新 | 安全监测、事件中心、仪表板AI智能分析等
  • 唐婉歆携作品VoyEase亮相2025米兰设计周,以多感官沉浸式设计重塑全球旅行体验
  • 2025年5月AI科技领域周报(5.5-5.11):AGI研究进入关键验证期 具身智能开启物理世界交互新范式
  • 数据可视化-----子图的绘制及坐标轴的共享
  • 泽连斯基已离开土耳其安卡拉
  • 押井守在30年前创造的虚拟世界何以比当下更超前?
  • 远如《月球背面》,近似你我内心
  • 国内首家破产的5A景区游客爆满,洛阳龙潭大峡谷:破产并非因景观不好
  • 法治日报整版聚焦:儿童能否成为短视频主角?该如何监管?
  • 从这些电影与影像,看到包容开放的上海