一、下载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'
...