miniGUI 3.0.12开发环境搭建

想到哪写到哪吧!后续有时间会再整理。

开发环境:

Ubuntu12.04

minigui3.0.12

搭建过程比较通过,有很多依赖库要搭建,而且官网上已经发出公告3.2版本之下的不再提供依赖库的维护。今年新发布的最新版本是5.0,版本太高不敢用,一是怕不稳定,二是项目里用的还是2.4.x。

如果只是用来学习一下,还是上3.2或者4.0吧!

因为是在公司电脑上,系统是win10,而且因为信息安全还限网搭环境是真的很麻烦,有的时候还得碰运气。因为用的miniGUI的版本较老,稳妥考虑选择了当时相对主流的linux系统。如果是3.2可以用ubuntu14或者16,相对来说比12要好用一些。

win10安装linux虚拟机用的最多的还是vmware。最开始用的是player,正版免费体量小,但是莫名其妙的安装不了tools。没办法在主机和虚拟机之间互换文件,无奈弃置转而安装vmware workstations,我说正版有人信吗?安装了tools后可以互传文件。

需要准备的minigui文件资源有:

工具及依赖库文件:

qvfb2-2.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

 

官网上对每个资源文件都有简略的介绍,其中较为重要的有png,jpeg,zlib等依赖库,freetype是字体的依赖库,qvfb2是一个QT仿真器(具体我也不了解,而且安装过程也是挺麻烦的),minigui-res-be-3.0.12.tar.gz是用到的一些资源文件,

libminigui-gpl-3.0.12.tar.gz(libminigui-3.0.12.tar.gz)是最重要的核心库文件。一般有了这些就够用了。如果想要跑mg-samples-3.0.12.tar.gz中的样例代码可能还需要其他的一些依赖库和那堆组件。

 

大多数组件和依赖库的安装只需要用到以下流程,建议在root用户下的终端进行操作:

#tar -zxvf  xxx.tar.gz

#./configure(一般采用默认配置即可,如果是跨平台或在特殊的嵌入式板子上部署需要自行配置各种参数)

#make

#make install(不在root用户下需使用 sudo make install)

 

安装qvfb2的时候,./configure可能会失败提示缺少各种依赖库,缺哪个就安装哪个,使用以下命令:

#sudo apt-get install xxx 

如果虚拟机无法联网或者apt-get下载慢或卡死,自行百度解决方法。

 

另外,如果出现这个错误

checking for Qt... configure: error: Qt (>= Qt 3.0.3) (headers and libraries) not found. Please check your installation!

For more details about this problem, look at the end of config.log.

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即可。

 

在解压安装了libminigui-3.0.12.tar.gz后

在/etc/ld.so.conf.d修改或新建一个文件minigui.conf,在其中新起一行输入/usr/local/lib ,这是告诉minigui去找之前安装的各种库文件的,然后记得刷新动态库:

#sudo ldconfig

 

最后,或者直接运行之前解压的mg-samples-3.0.12.tar.gz目录下的样例可执行文件,或者自己写个带界面的helloworld程序(程序可参见miniGUI编程指南)。最后编译运行,看见成功。。。个鬼,估计八成还会有这个提示:

execlp error!!
execl: No such file or directory
NEWGAL>PCXVFB: Wait too long for CLIENT.
NEWGAL: Does not find matched engine: pc_xvfb.
KERNEL>InitGUI: Can not get graphics engine information!
解决:
修改MiniGUI.cfg配置文件中以下这段,其实就是修改一下仿真器的指向,如果成功地安装了gvfb估计不会报错也不用修改。

 

[system]

# GAL engine and default options

gal_engine=pc_xvfb

defaultmode=800x600-16bpp

...

...

...

#{{ifdef _MGGAL_PCXVFB

[pc_xvfb]

defaultmode=800x600-16bpp

window_caption=XVFB-for-MiniGUI-3.0-(Gtk-Version)

exec_file=/usr/local/bin/qvfb2                                              //修改这里,指向qvfb2的路径,如果不是安装默认安装的改为实际安装的路径。

#}}

 

之后运行样例基本就没问题了,基本搭建完毕。如果是自己写程序编译运行还会有一些小坑,应该不会都能遇到但是还是记录一下。编译的时候动态库的链接顺序是有说道的,虽然原理我也没搞清,

但是安装《miniGUI编程指南》中用Thread模式编译确实会报错。

/usr/local/lib/libminigui_ths.so: undefined reference to 'pthread_xxx'

/usr/local/lib/libminigui_ths.so: undefined reference to 'sem_xxx'

在调用动态库的时候找不到pthread库中的某些函数,因此报错函数无定义。先确认自己是不是安装了pthread,用man指令查看一下。例如,man 3 pthread_create。没安装就用apt-get install安装相应的库。

安装后还是不行那就有可能是我遇到的问题了:

gcc/g++链接时.o文件以及库的顺序问题

百度可以直接搜索这个解答,我没时间细看直接调整一下编译命令里的链接顺序,例如,gcc -o helloworld helloworld.c -l minigui_ths -l pthread -l dl -l png -l jpeg -l z

注意,这条命令里比文档中多链接了一个库 -l dl ,如果不链接这个库有可能会报错:

/usr/local/lib/libminigui_ths.so: undefined reference to 'dlopen'

/usr/local/lib/libminigui_ths.so: undefined reference to 'dlclose'

...

...

 

posted @ 2020-06-01 15:46  终有一刻和光同尘  阅读(625)  评论(0)    收藏  举报