交叉编译MiniGUI

简介: 交叉编译MiniGUI

在MiniGUI官网提供了编译方法:http://www.minigui.com/blog/quick-start

编译5.0和4.0的方法类似,这两个版本的下载链接分别是https://github.com/VincentWei/build-minigui-5.0https://github.com/VincentWei/build-minigui-4.0,下面以编译4.0为例。

 

交叉编译工具链:arm-linux-gnueabihf-gcc 7.3

 

下载:

$ git clone https://github.com/VincentWei/build-minigui-4.0.git

$ cd build-minigui-4.0

执行 ./fetch-all.sh,下载软件包

编译两个会用到的工具bin2c和upf2c:

$ cd mg-tools/tools
$ gcc bin2c.c -o bin2c
$ sudo cp bin2c /usr/local/bin
$ cd mg-tools/font-tools
$ gcc upf2c.c -o upf2c
$ sudo cp upf2c /usr/local/bin

 

然后进入cross-build/arm-r16-linux/,这里提供了一个交叉编译MiniGUI的参考,不过编译的是时候会有一些问题。

  • 修改modify-this-config.sh:
diff --git a/cross-build/arm-r16-linux/modify-this-config.sh b/cross-build/arm-r16-linux/modify-this-config.sh
index 698bc6f..c5e0a08 100644
--- a/cross-build/arm-r16-linux/modify-this-config.sh
+++ b/cross-build/arm-r16-linux/modify-this-config.sh
@@ -3,7 +3,7 @@
 
 # You must set TINA_DIR for r16 tina dirctory.
 # It is the ONLY line you have to modify in the whole compiling process. 
-TINA_DIR=/home/projects/r16/tinav2.5
+TINA_DIR=${PWD}/build
  • 下载软件包,./fetch-all.sh
  • 修改libinput.txt,替换交叉编译工具链
  • 修改build-all.sh,替换交叉编译工具链

下面开始编译:

  • 在交叉编译libharfbuzz的时候遇到一些问题,然后我用qemu static +ubuntu arm文件系统的办法直接编译一个arm版本的harfbuzz库,编译时的configure参数使用build-all.sh中的。编译完成后,将得到的库和头文件拷贝到rootfs/usr/local下。

然后为rootfs/usr/local/lib/libharfbuzzex.so.0.20501.0建立一个软连接,因为在编译minigui时会检测libharfbuzz.so

ln -sf libharfbuzzex.so.0.20501.0 libharfbuzz.so

  • udev编译错误:

3rd-party/udev-182/src/sd-daemon.c:394: undefined reference to `mq_getattr'

  修改build-all.sh,编译udev时为LDFLAGS增加参数"-lrt"

  • minigui编译错误

freetype2.h:65:10: fatal error: ft2build.h: No such file or directory

#include <ft2build.h>

  修改build-all.sh,编译minigui时增加-I$WORK_DIR/rootfs/usr/local/include/freetype2

harzbuff-minigui-funcs.c:66:10: fatal error: hb.h: No such file or directory

#include <hb.h>

  修改build-all.sh,编译minigui时增加-I$WORK_DIR/rootfs/usr/local/include/harfbuzz

 

  • libmgncs4touch编译错误

grep: /usr/lib/arm-linux-gnueabihf/libfreetype.la: No such file or directory

sed: can't read /usr/lib/arm-linux-gnueabihf/libfreetype.la: No such file or directory

  删除rm rootfs/usr/local/lib/libharfbuzzex.la

 

  • mg-tests编译错误

/lib/libminigui_ths.so: undefined reference to `dlsym'

/lib/libminigui_ths.so: undefined reference to `dlerror'

/lib/libminigui_ths.so: undefined reference to `dlopen'

/lib/libminigui_ths.so: undefined reference to `dlclose'

  重新编译minigui,增加编译参数"-ldl",然后make clean,重新执行build-all.sh

 


 

上面默认编译的MiniGUI是线程模式,下面编译process模式,修改build-all.sh,修改minigui的编译参数“--with-runmode=procs”,然后将“-lminigui_ths”改为“-lminigui_procs”。编译:

  • minigui编译错误

drmvideo.c:2054:18: error: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'size_t {aka unsigned int}' [-Werror=format=]

  修改minigui的编译参数,增加:-Wno-error=format=

 

下面是交叉编译minigui的压缩包的下载链接:

链接: https://pan.baidu.com/s/1JjN3QEr0njw-UWmXdeHF6Q 提取码: 215s

 


 

将procs模式的minigui拷贝到跟文件系统中,然后再把编译好的mg-samples目录拷贝到板子上。

修改/usr/local/etc.MiniGUI.cfg:

[system]
# GAL engine and default options
# The equivalent environment variable: MG_GAL_ENGINE
gal_engine=fbcon
# The equivalent environment variable: MG_DEFAULTMODE
defaultmode=800x600-16bpp
# IAL engine
# The equivalent environment variable: MG_IAL_ENGINE
ial_engine=console
mdev=/dev/input/mice
mtype=IMPS2

kernel配置上需要配置:

Device Drivers  ---> Input device support  ---><*>   Mouse interface

 

在运行测试程序时会遇到如下问题:

[root@vexpress-a9 mginit]# ./mginit

KERNEL>LoadSharedResource: No such file or directory

KERNEL>InitGUI (step 9): Can not load shared resource!

Aborted

原因是mginit在运行时,在kernel_LoadSharedResource中其中会创建一个lock文件:/var/tmp/mginit,但是在目前的板子上不存在/var/tmp目录,所以需要手动在板子上创建一个目录。

[root@vexpress-a9 mginit]# mkdir /var/tmp

然后重新运行:

root@vexpress-a9 mg-samples]# cd mginit/
[root@vexpress-a9 mginit]# ./mginit
IAL: use 'tty' native keyboard engine, with the device file ''
IAL Native Engine: keyboard device has been connected.
IAL Native Engine: mouse device has been connected.
libpng warning: iCCP: known incorrect sRGB profile
new child, pid: 870.
New comming in client: 
do_client_join_layer: SERVER: Join a client (graphics) to layer mginit
New client joined layer: (mginit, graphics)

运行截图:

 

完。

相关文章
|
测试技术 API
harfbuzz 的用法
HarfBuzz 整形 API 的核心是函数。此函数采用一种字体,即 包含一串 Unicode 代码点的缓冲区和 (可选)字体功能列表作为其输入。它取代了 缓冲区中的代码点,其中包含来自 字体,正确排序和定位,以及任何 应用的可选字体功能。hb_shape()
1281 0
|
消息中间件 存储 物联网
MQTT常见问题之mqtt第4—6次调用会报错如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
Ubuntu
ubuntu编译rk3588异常
ubuntu编译rk3588异常
700 0
|
JavaScript
Vue Antdv 列表(table、list)自定义空数据状态UI
Vue Antdv 列表(table、list)自定义空数据状态UI
1316 0
|
存储 编解码 索引
FreeType2使用指南
FreeType2使用指南
1464 0
|
传感器 人机交互
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
1164 0
STM32:串口收发HEX数据包理论篇(内含:1.实验现象+2.文本数据包/HEX数据包+ 3.文本数据包接收/HEX数据包接收)
|
数据库 数据安全/隐私保护 数据库管理
Odoo进销存(采购、销售、仓库)入门教程 - 上
转载地址:http://blog.csdn.net/wangnan537/article/details/46434373 运行环境: Ubuntu14.04+Odoo8.0 作者:苏州-微尘 0. 前言 Odoo(OpenERP)作为一款优秀的开源ERP软件,开发历史已有10年之久。
3067 0
libtool: Version mismatch error 解决
libtool: Version mismatch error 解决
1034 0
|
Linux 图形学 Windows
嵌入式课程实现Linux操作系统LVGL移植操作
嵌入式课程实现Linux操作系统LVGL移植操作