[此文档并非安装minigui在PC端的linux平台下,而是给开发板搭建minigui的运行所需要的类库等环境]
安装pc端的minigui类库基本上都是:
./configure
make
make
install
就可以了
-----------------------------------------------------------------
pc平台:ubuntu10.04
开发板:FriendlyARM
tiny210V2
交叉编译工具:arm-linux-gcc
minigui版本:3.0.12
一,miniGUI编译安装
交叉编译工具arm-linux-gcc
相关文件库:从官网处下载(http://www.minigui.org/en/download/)
1、安装miniGUI需要的库:
freetype-2.3.9-fm20100818.tar.gz
jpegsrc.v7.tar.gz
libmgplus-1.2.4.tar.gz
libminigui-gpl-3.0.12.tar.gz
libpng-1.2.37.tar.gz
mg-samples-3.0.12.tar.gz
minigui-res-be-3.0.12.tar.gz
zlib-1.2.2.tar.gz
从windows下miniStdio移植程序,编译说需要的库
libmgutils-1.0.4.tar.gz
libmgncs-1.0.8.tar.gz
依赖关系:
libpng (zlib);
libmgplus(libminigui)
mg-samples(libminigui,libmgplus)
libmgncs(libmgutils);
2、安装库
JPEG
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
$ make
$ make install
FREETYPE
$ ./configure --build=i686-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
$ make
$ make install
ZLIB
$ ./configure --shared --prefix=/home/song/miniGUI/target
修改Makefile,将编译相关的设置改成交叉工具链
$ make
$ make install
LIBPNG
$ cp scripts/makefile.linux Makefile
修改
21 # Utilities:
22 AR_RC=ar rc
23 CC=cc
24 MKDIR_P=mkdir -p
25 LN_SF=ln -sf
26 RANLIB=ranlib
为
21 # Utilities:
22 AR_RC=arm-linux-ar rc
23 CC=arm-linux-gcc
24 MKDIR_P=mkdir -p
25 LN_SF=ln -sf
26 RANLIB=arm-linux-ranlib
修改
32 prefix=/usr/local
为
32 prefix=/home/song/miniGUI/target/
修改zlib库路径
# Where the zlib library and include files are located.
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=$(prefix)/lib
ZLIBINC=$(prefix)/include
$ make
$ make install
LIBMINIGUI
$ ./configure --build=i686-linux --target=arm-linux
--host=arm-linux --prefix=/home/song/miniGUI/target
CC=arm-linux-gcc CPP=arm-linux-cpp CXX=arm-linux-g++
LD=arm-linux-ld AR=arm-linux-ar RANLIB=arm-linux-ranlib
STRIP=arm-linux-strip
出现
Going to generate license pictures ...
./configure: line 15530: ./runme.sh: No such file or
directory
无视之
$ vim src/newgal/pcxvfb/Makefile
修改194行,将/usr/include去掉:
INCLUDES = -I$(abs_top_srcdir)/src/include
-I$(abs_top_srcdir)/include \
-I$(abs_top_srcdir)/src/newgal/ -I/usr/include/
否则编译pcxvfb.c将出错
$ make
$ make install
LIBMGPLUS
$ CC=arm-linux-gcc CXX=arm-linux-g++ ac_ct_CXX=arm-linux-g++
MINIGUI_CFLAGS=-I/home/song/miniGUI/target/include
CPPFLAGS=-I/home/song/miniGUI/target/include
MINIGUI_LIBS=-L/home/song/miniGUI/target/lib-lminigui_ths-ljpeg-lpng-ldl-lm-lpthread
./configure --prefix=/home/song/miniGUI/target --build=i686-linux
--host=arm-linux --target=arm-linux
$ make
$ make install
--------------------------
MG-SAMPLES
(由于不管怎么写类库的路径,他就是不在home/song/miniGUI/target/lib下找,他总是在/usr/local/lib下找,但是/usr/local/lib下的为gcc编译的linux环境的类库,所以肯定会出错。这个东西弄了好几天才琢磨明白。)
提前做:
cd
/usr/local/
mv lib
lib.bak
cp -af
/home/song/miniGUI/target/lib ./
【上边三个命令执行完毕之后开始执行下边的./configure,直到此处的交叉编辑工作全部结束,记得一定要把此处改回原来,不然对以后的操作造成影响。】
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
CFLAGS="-I/home/song/miniGUI/target/include"
$ make
$ cd src/ # 生成的可执行程序放在此目录,需手动复制
------------------------
MINIGUI-RES
这些资源与平台无关,大致是一些图片
$ ./configure --prefix=/home/song/miniGUI/target
$ make
$ make install
执行install之后,会安装到target目录下的share文件夹
修改MiniGUI.cfg
将MiniGUI.cfg的开头部分改为:
[system]
# GAL engine and default options
gal_engine=fbcon
defaultmode=800x480-16bpp (对应板子分辨率)
【这里跟机子有关,我的机子是32bpp,如果分辨率有问题,可以调动几次试试】
# IAL engine
ial_engine=console
mdev=/dev/input/mice
mtype=IMPS2
[fbcon]
defaultmode=800x480-32bpp 【这里跟机子有关,我的机子是32bpp,如果分辨率有问题,可以调动几次试试】
修改res资源放置的路径,在配置文件中的[cursorinfo]->cursorpath以及[resinfo]->respath
否则运行sample程序时会出错。
修改路径:
103 [cursorinfo]
104 # Edit following line to specify cursor files path
105 cursorpath=/usr/local/share/minigui/res/cursor/
和
131 [resinfo]
132 respath=/usr/local/share/minigui/res/
比如,运行helloworld时显示:
get_image_type: unknown type png.
get_image_type: unknown type png.
get_image_type: unknown type png.
get_image_type: unknown type png.
get_image_type: unknown type png.
KERNEL>InitGUI: Count not init mouse cursor!
KERNEL>InitGUI: Init failure, please check your
MiniGUI configuration or resource.
3 移植程序
首先安装依赖库
libmgutils-1.0.4.tar.gz
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
CFLAGS="-I/home/song/miniGUI/target/include"
$ make
$ make install
libmgncs-1.0.8.tar.gz
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
CFLAGS="-I/home/song/miniGUI/target/include"
$ make
$ make install
把在windows下通过miniStido设计的界面程序复制到linux下
交叉编译界面程序
arm-linux-gcc -g -O2 -Wall -Wstrict-prototypes
-pipe -o flight src/FlightGUI.c
src/FlightGUI_main.c -L/home/song/miniGUI/target/lib -lminigui_ths
-ljpeg -ldl -lm -lpthread -lmgplus -lmgncs -lmgutils -lstdc++
-I/home/song/miniGUI/target/include -I./include
其中
-lstdc++是交叉编译工具所带的库(/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib);
4、把/home/song/miniGUI/target
下的文件拷贝到开发板上相应目录下,注意MiniGUI.cfg里面相应路径的配置。【在拷贝类库的时候,建议tar打包之后再复制到U盘,然后放到开发板,这样的软连接不用设置。】
【lib中的类库单独拷出一份开发板的/usr/lib下,整体还是要在/usr/local下。】
5、把编译好的界面程序以及mgncs.cfg 、res文件拷贝到开发板的同一个目录下,运行就可。
注意:在运行程序时会提示你找不到相应的库文件,要建立相应的软连接
用法:ln -s 源文件 目标文件