一、下载源码包
移植所需的文件可以从minigui官网下载:http://www.minigui.org/en/download/
主要文件有:
工具及依赖库文件:
qvfb2-2.0.tar.gz
gvfb-1.0.0.tar.gz
zlib-1.2.2.tar.gz
libpng-1.2.37.tar.gz
jpegsrc.v7.tar.gz
freetype-2.3.9-fm20100818.tar.gz
minigui文件
libminigui-gpl-3.0.12.tar.gz
minigui-res-be-3.0.12.tar.gz
mg-samples-3.0.12.tar.gz
minigui组件文件
libmgi-2.0.4.tar.gz
libmgplus-1.2.4.tar.gz
libmg3d-1.0.2.tar.gz
libmgutils-1.0.4.tar.gz
libmgp-1.2.2.tar.gz
libmgncs-1.0.8.tar.gz
二、依赖库文件编译
1、编译libz
tar zxvf zlib-1.2.2.tar.gz
进入目录
#./configure
#make
#sudo make install
2、编译libjpeg
tar zxvf jpegsrc.v7.tar.gz
./configure
make
make install
3、编译libpng
tar zxvf libpng-1.2.37.tar.gz
./configure --enable-shared
make
sudo make install
4、编译freetype
tar zxvf freetype-2.3.9-fm20100818.tar.gz
./configure
make
sudo make install
三、编译安装qvfb2-2.0
Qvfb2需要qt3支持,需要安装libqt3-mt-dev libqt3-mt
安装libqt3-mt-dev libqt3-mt
#sudo apt-get install libqt3-mt-dev libqt3-mt
./configure --with-qt-includes=/usr/share/qt3/include/ --with-qt-libraries=/usr/share/qt3/lib
配置通过
#make
#make install
运行/usr/local/bin/qvfb2
直接运行qvfb2出现错误
#./qvfb2
#oops:client1 :没有那个文件和目录.
后经查资料得知,这不是错误,是因为qvfb2不知支持直接运行,故不能这样使用.
四、安装minigui
1.安装minigui-res
tar zxvf minigui-res-be-3.0.12.tar.gz
./configure
make install
2.编译安装minigui corelib
tar zxvf libminigui-3.0.12-linux.tar.gz
#./configure
#make
#make install
在/etc/ld.so.conf.d新建一个文件minigui.conf,在其中输入/usr/local/lib
然后刷新动态库:
#sudo ldconfig
3.安装minigui组件
(1)tar zxvf libmgplus-1.2.4.tar.gz
./configure
make
make install
(2)tar zxvf libmgi-2.0.4.tar.gz
./configure
make
make install
注:这里有可能会出现一个问题
用gcc 5.2.0去编译mg-samples-3.0.12,报错:
…/lib/libminigui_ths.so: undefined reference to WndClientRect’ …/lib/libminigui_ths.so: undefined reference topixel2rgb’
…/lib/libminigui_ths.so: undefined reference to `WndRect’
解决方法:
$cd libminigui-3.0.12-linux
$grep -r “WndClientRect” .
发现WndClientRect在libminigui-3.0.12-linux/src/newgdi/gdi.c中,将inline void WndRect(HWND hWnd, PRECT prc)和inline void WndClientRect(HWND hWnd, PRECT prc)前面的inline去掉。
$grep -r “pixel2rgb” .
发现pixel2rgb在libminigui-3.0.12-linux/src/mybmp/winbmp.c中,将inline void pixel2rgb (gal_pixel pixel, GAL_Color* color, int depth)前面的inline去掉。
$make clean;make;make install
重新生成库文件。
再去编例子程序就OK了。
原因:
因编译器版本差异,c99对inline的处理与c89的extern inline一致,没有外部可见的函数生成,但是外部可见的函数必须存在,因为有可能会用到它。
(3)tar zxvf libmg3d-1.0.2.tar.gz
./configure
make
make install
(4)tar zxvf libmgutils-1.0.4.tar.gz
./configure
make
make install
(5)tar zxvf libmgp-1.2.2.tar.gz
./configure
make
make install
(6)tar zxvf libmgncs-1.0.8.tar.gz
./configure
make
make install
libmgeff-1.0.0.tar.gz的编译安装暂没有研究
五、编译安装sample
tar zxvf …/src/mg-samples-3.0.12.tar.gz
#./configure
#make
#make install
六、运行minigui sample
(1)修改/usr/local/etc/MiniGUI.cfg
#{{ifdef _MGGAL_PCXVFB
[pc_xvfb]
defaultmode=800x600-16bpp
window_caption=XVFB-for-MiniGUI-3.0-(Gtk-Version)
#exec_file=/usr/local/bin/gvfb
exec_file=/usr/local/bin/qvfb2
#}}
(2)用普通用户(别用root)运行./mg-samples-3.0.12/src/helloworld
注:这里有可能出现的问题
./helloworld: error while loading shared libraries: libminigui_ths-3.0.so.12: cannot open shared object file: No such file or directory
解决:
export LD_LIBRARY_PATH=/home/colin/minigui/lib_x86/lib:$LD_LIBRARY_PATH