在ubuntu16.04(32位)上安装miniGUI

一、下载源码包
移植所需的文件可以从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

猜你喜欢

转载自blog.csdn.net/qq_18204721/article/details/83990891
今日推荐