当前位置: 代码迷 >> 综合 >> imx6 yocto移植minigui-3.0.12
  详细解决方案

imx6 yocto移植minigui-3.0.12

热度:83   发布时间:2023-12-11 20:56:40.0

一、下载minigui所需库源码包:

zlib-1.2.6.tar.gz、libpng-1.2.37.tar.gz、jpegsrc.v8c.tar.gz、freetype-2.3.9-fm20100818.tar.gz、minigui-res-be-3.0.12、libminigui-gpl-3.0.12.tar.gz、mg-samples-3.0.12

解压后,文件目录层次:

minigui

|——zlib-1.2.6

|——libpng-1.2.37

|——jpeg-8c

|——freetype-2.3.9-fm20100818

|——minigui-res-be-3.0.12

|——libminigui-gpl-3.0.12

|——mg-samples-3.0.12

|____release

二、编译相关库(prefix中用绝对路径,前向路径用xxx代替):

运行toolchain配置脚本,设置环境变量为交叉编译工具及相关编译选项,在./configure各个库源码时会自动读取环境变量中的值,并生成到Makefile中。

$ . /opt/fsl-imx-fb/4.1.15-1.2.0/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi

1、编译zlib库

1)$ cd zlib-1.2.6
2)$ ./configure --prefix=xxx/minigui/release --shared

3)$ make clean;make;make install

2、编译png库

1)$ cd libpng-1.2.37

2)$ ./configure --prefix=xxx/minigui/release \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux

3)$ make clean;make;make install

3、编译jpeg库
1)$ cd jpeg-8c
2)$ ./configure --prefix=xxx/minigui/release \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux \
--enable-shared

3)$ make clean;make;make install

4、编译Freetype库
1)$ cd freetype-2.3.9-fm20100818
2)$ ./configure --host=arm-linux \
--enable-static \
--prefix=xxx/minigui/release
3)$ make clean;make;make install

5、编译MINIGUI资源库
1)$ cd minigui-res-be-3.0.12
2)$ ./configure  --prefix=xxx/minigui/release

3)$ make clean;make;make install

6、编译核心库
1)$ cd libminigui-gpl-3.0.12
2)$ export CFLAGS="-I/home/test01/myshare/new-kernel/minigui/release/include"; \
export CPPFLAGS="-g -I/home/test01/myshare/new-kernel/minigui/release/include"; \
export CXXFLAGS="-g -I/home/test01/myshare/new-kernel/minigui/release/include"
3)$ ./configure --prefix=xxx/minigui/release \
--host=arm-linux \
--target=arm-linux \
--build=i386-linux \
--with-osname=linux \
--with-targetname=fbcon \
--enable-autoial \
--disable-vbfsupport \
--with-ttfsupport=ft2 \
--with-ft2-includes=xxx/minigui/release/include/freetype2 \
--disable-splash \
--disable-screensaver
4)修改:vim src/newgal/pcxvfb/Makefile 的194行,将"INCLUDES"赋值项中"-I/usr/include"去掉,否则编译pcxvfb.c将出错;
5)修改libminigui-3.0.12-linux/src/newgdi/gdi.c,将inline void WndRect(HWND hWnd, PRECT prc)和inline void WndClientRect(HWND hWnd, PRECT prc)前面的inline去掉;
   修改libminigui-3.0.12-linux/src/mybmp/winbmp.c,将inline void pixel2rgb (gal_pixel pixel, GAL_Color* color, int depth)前面的inline去掉。
6)修改mgconfig.h中如下选项,需手动修改,用configure的配置选项无效
(a)打开支持FreeType2的编译选项:/* #undef _MGFONT_FT2 */ 修改为 #define _MGFONT_FT2 1
(b)打开支持jpeg的编译选项:/* #undef _MGIMAGE_JPG */ 修改为 #define _MGIMAGE_JPG 1
(c)打开支持png的编译选项:/* #undef _MGIMAGE_PNG */ 修改为 #define _MGIMAGE_PNG 1

7)$ make clean;make;make install

7、编译minigui例子程序
1)$ cd mg-samples-3.0.12/
2)$ export CFLAGS="-I/xxx/minigui/release/include"; \
export CPPFLAGS="-g -I/xxx/minigui/release/include"; \
export CXXFLAGS="-g -I/xxx/minigui/release/include"; \
export PKG_CONFIG_PATH="/xxx/minigui/release/lib/pkgconfig"
3)$ ./configure --prefix=xxx/minigui/release \
--host=arm-linux \
--target=arm-linux \
--build=i386-linux \
--with-lang=zhcn
4)修改mg-samples-3.0.12/same(graphics、housekeeper、src等所有子文件夹)/Makefile:
在“LIBS=”项赋值添加“-lz”
5)修改mg-samples-3.0.12/ctrl_dlg/dlgdemo.c,删除或屏蔽掉#include <mgplus/mgplus.h>

6)$ make clean;make;make install

 

*注:编译完成后将release/lib的库文件复制到根文件系统/usr/lib。根据MiniGUI.cfg中定义的资源目录路径:/usr/local/share/minigui/res,要将release/share/minigui/res目录下的资源文件复制到根文件系统中。

同时将release/lib中的库文件也要复制到应用源码中lib/sys-lib中,以及release/include复制到应用中的include,否则无法在应用中调用minigui的接口。还要在应用的Makefile中LD_OPT_FLAGS项加上-lfreetype,否则会有以下类似的报错:

../../lib/sys-lib/libminigui_ths.so: undefined reference to `FT_Set_Pixel_Sizes'
../../lib/sys-lib/libminigui_ths.so: undefined reference to `FT_New_Size'

../../lib/sys-lib/libminigui_ths.so: undefined reference to `FT_Load_Glyph'

...