Buildroot 移植MiniGUI
Buildroot 移植MiniGUI
MiniGUI是一个用于嵌入式系统的轻量级图形用户界面库。要将 MiniGUI 4.0.8 移植到 Buildroot 系统中,通常需要下载并安装几个关键的组件包。虽然具体的版本号可能会有所不同,但一般来说,移植 MiniGUI 需要以下几类包:
-
核心库(Core Library): 这是 MiniGUI 的核心部分,提供了基本的窗口系统和绘图功能
-
资源文件(Resources): 包含 MiniGUI 所需的各种资源,如位图、图标等。这些资源通常是通过
minigui-res
包提供的。 -
第三方依赖库(Third-Party Libraries): MiniGUI 可能依赖于一些其他的库,比如 FreeType(用于字体渲染)、LibPNG(用于处理 PNG 图像)、LibJPEG(用于处理 JPEG 图像)等。确保你已经安装了所有必要的第三方库。
-
附加组件(Add-ons): 如果你的应用需要用到 MiniGUI 的高级功能或插件,你还需要下载相关的附加组件。例如,
libmgutils
、libmgplus
等。 -
示例程序(Samples): 虽然不是必需的,但是下载示例程序可以帮助你了解如何使用 MiniGUI 提供的功能,并作为开发参考。
为了将 MiniGUI 4.0.8 成功集成到 Buildroot 中,你需要做的是:
- 在 Buildroot 中添加 MiniGUI 的配置选项。
- 下载 MiniGUI 源码以及其依赖项的源码。
- 根据 Buildroot 的规范编写相应的 Makefile 或者 package recipe 文件来描述如何编译和安装 MiniGUI 和它的依赖项。
Buildroot 有一个非常灵活的包管理系统,需要的包编写自己的 .mk
文件,定义如何下载、配置、编译和安装该软件包。
1. 准备环境
确保开发环境已经安装了 Buildroot 的依赖工具(如 make
、gcc
、git
等)。如果是全新环境,可以参考 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 需要以下几类包:
- 核心库(Core Library): 这是 MiniGUI 的核心部分,提供了基本的窗口系统和绘图功能。
- 资源文件(Resources): 包含 MiniGUI 所需的各种资源,如位图、图标等。这些资源通常是通过
minigui-res
包提供的。 - mGUtils: 是一个实用工具库,它为 MiniGUI 应用程序提供了一系列的辅助函数和工具,以简化开发过程并提高代码效率
- mGPlus: 是 MiniGUI 的高级图形库,它在 MiniGUI 核心库的基础上增加了更多强大的图形处理能力。
- 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 5月 14 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 5月 14 14:44 output/target/usr/lib/libminigui_ths-4.0.so.0.0.8*
lrwxrwxrwx 1 -- -- 27 5月 14 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 的中文字体部署及支持&窗口模态、非模态