0. MINIGUI

MiniGUI 是一款面向嵌入式体系的高级窗口体系(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持体系,由魏永明先生于 1998 年底开端开发。

2002 年,魏永明先生创立北京飞漫软件技术有限公司,为 MiniGUI 供给商业技术支持,一起也持续供给开源版别,飞漫软件是中国区域为开源社区奉献代码最多的软件企业。最终一个选用 GPL 授权的 MiniGUI 版别是 1.6.10,从 MiniGUI 2.0.4 开端 MiniGUI 被重写并运用商业授权。

手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)
手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)

一、装置准备

1. 软件版别

装置MINIGUI编程环境

  • MINIGUI版别3.2.0
  • 装置体系:Ubuntu16.04

不得不说,MINIGUI的装置真实过于复杂,借此文安慰一下我历经7小时苦痛摧残的灵魂,整理一下我的装置与装备的过程(从0到运转helloworld程序),一起为后辈员工供给一点辅导和帮助。

2. 下载地址

本文参照MINIGUI的官方装置文档,文档地址:www.minigui.com/blog/minigu…

操作体系请选用Ubuntu 16.04版,运用最新的Ubuntu或许会在装置过程中呈现各种“奇怪的”错误(真是奇怪的错误,至今不知道怎样修复……)

二、装置前的准备工作

假定你已成功装置Ubuntu16.04操作体系

1、装置各种依靠软件

你需求保证现已装置以下软件。若未装置,则能够履行sudo apt-get install 软件名进行装置。
1)	git
2)	gcc/g++
3)	binutils
4)	autoconf/automake
5)	libtool
6)	make
7)	cmake
8)	pkg-config

2、装置各种依靠库

你需求保证现已装置以下依靠库。若未装置,则能够履行sudo apt-get install 库名进行装置。
1)	libgtk2.0-dev
2)	libjpeg-dev
3)	libpng12-dev
4)	libfreetype6-dev
5)	libsqlite3-dev
6)	libxml2-dev

3、装备Github的认证密钥

因为接下来需求从Github上克隆MINIGUI的装置包,因此这里需求装备Github的密钥认证。

  1. 首先去Github上注册一个账号。注册是免费的。记住注册时填写的邮箱。
  2. 然后在Ubuntu上,履行指令:
ssh-keygen -t rsa -C(大写) 你的邮箱地址

履行该指令后会有提示信息。第一个提示信息表明生成的公钥私钥的保存方位。一般普通用户保存在~/.ssh内,root用户保存在/root/.ssh内(目录是躲藏的)。 第二个提示信息表明登入暗码,直接按回车即可(表明不需求暗码)。 第三个提示信息表明承认暗码,也是直接按回车即可。 生成公钥私钥后,进入.ssh目录内,检查id_rsa.pub的内容。 进入Github,在账号内找到Settings,点击New SSH key,将id_rsa.pub的内容复制到文本框内,留意不要有遗失否则会认证失利。

手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)
手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)
手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)
增加结束后,在Ubuntu内履行ssh -T git@github.com测验衔接是否成功。假如呈现欢迎信息则表明衔接Github成功。若呈现Permission denied则表明衔接失利。 衔接失利或许是公钥私钥装备未生效。履行ssh-add ~/.ssh/id_rsa将刚才生成的公钥私钥增加到Github内,再次测验即可。

三、下载完全版的MINIGUI装置包

运用git的clone(克隆)功能获取完整的MINIGUI3.2的代码文件。履行指令:

git clone git@github.com:VincentWei/build-minigui-3.2.git

VincentWei是MINIGUI的发明人和维护者。

获取结束后,进入build目录

cd build-minigui-3.2

运转该目录下的fetch脚本获取全部的MINIGUI的源代码。

./fetch-all.sh

等候下载完结即可。

四、装置过程

以下目录,若未特别阐明,皆以build-minigui-3.2作为基准目录

1、装置gvfb依靠库

进入gvfb目录。顺次履行以下指令:

cmake . (留意这个点(当时目录)不要疏忽)
make
sudo make install

2、装置chipmunk依靠库

进入3rd-party/chipmunk-5.3.1目录。顺次履行以下指令:

cmake . (留意这个点(当时目录)不要疏忽)
make
sudo make install

3、编译MINIGUI源代码

进入minigui-res目录。顺次履行以下指令:

./autogen.sh
./configure
sudo make install

4、树立所有代码

回到build-minigui-3.2目录内,履行指令:

./build-all.sh
等候build完结。

四、验证装置是否成功

等候build完结,若无报错信息,则表明成功装置了MINIGUI3.2编程环境。 我们能够用两种办法验证是否装置成功。

办法一:

进入到/usr/local/bin目录,发现该目录内有一个名为./mguxdemo的程序。运转该程序。 该程序是一个运用MINIGUI编写的类手机体系的应用程序,若能够运转该程序且无溃散、无报错,则表明MINIGUI装置成功。

手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)

办法二:

进入到mg-sample目录。在该目录履行指令:

./configure
make

然后进入到当时目录下的same目录,运转same程序

./same

该程序是一个消除小游戏。

手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)

留意:编译过程中或许会报错,再次履行一次./build-all.sh脚本即可。

五、编写helloworld程序

接下来编写一个helloworld程序。代码参照《miniGUI编程指南》V3.0第二章的程序,可是稍有改动(主要是取消了进程形式改成线程形式)。代码如下:

#include<stdio.h>
#include<minigui/common.h>
#include<minigui/gdi.h>
#include<minigui/minigui.h>
#include<minigui/window.h>
#include<minigui/control.h>
static int HelloWin(HWND hwnd, int message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	switch(message)
	{
		case MSG_PAINT:
			hdc = BeginPaint(hwnd);
			TextOut(hdc,60,60,"HelloWorld!");
			EndPaint(hwnd,hdc);
			return 0;
		case MSG_CLOSE:
			DestroyMainWindow(hwnd);
			PostQuitMessage(hwnd);
			return 0;
	}
	return DefaultMainWinProc(hwnd,message,wParam,lParam);
}
int MiniGUIMain(int argc, const char *argv[])
{
	MSG Msg;
	HWND hMainWnd;
	MAINWINCREATE CreateInfo;
	CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
	CreateInfo.dwExStyle = WS_EX_NONE;
	CreateInfo.spCaption = "HelloWorld";
	CreateInfo.hMenu = 0;
	CreateInfo.hCursor = GetSystemCursor(0);
	CreateInfo.hIcon = 0;
	CreateInfo.MainWindowProc = HelloWin;//
	CreateInfo.lx = 0;
	CreateInfo.ty = 0;
	CreateInfo.rx = 240;
	CreateInfo.by = 180;
	CreateInfo.iBkColor = COLOR_lightwhite;
	CreateInfo.dwAddData = 0;
	CreateInfo.hHosting = HWND_DESKTOP;
	hMainWnd = CreateMainWindow(&CreateInfo);
	if(hMainWnd == HWND_INVALID)
		return -1;
	ShowWindow(hMainWnd,SW_SHOWNORMAL);
	while(GetMessage(&Msg, hMainWnd))
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	MainWindowThreadCleanup(hMainWnd);
	return 0;
}

然后运转gcc进行编译,可是要留意需求链接各种动态库。编译指令如下:

gcc xxx.c -o xxx -lminigui_ths -ljpeg -lpng -lz -lpthread -lfreetype

其间:

  • 1)lminigui_ths:MINIGUI在线程形式下运转需求的依靠库。留意该参数必须放在第一个因为它需求依靠后续的各种动态库。假如编译器显现无法找到该库,则参照下面的办法装置这个库。 //运用gcc编译时需求留意,若库A依靠库B,则A必须处在B的前面。
  • 2)-ljpeg、-lpng:jpeg和png格式的图画支持库
  • 3)-lz:数据压缩库
  • 4)-lpthread:线程库
  • 5)-lfreetype:字体库 运转结果如下:

手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)

六、libminigui_ths的装置过程

假如在编译时提示缺少minigui_ths库,则能够按以下过程装置。

1)获取FMsoft的GPG密钥

因为minigui_this库需求运用apt-get在MINIGUI的官方下载装置,因此需求事先获取他们的认证。履行指令:

wget -qO - http://files.fmsoft.cn/ubuntu/key/fmsoft.gpg | sudo apt-key add -

留意第二个可选项是大写字母欧

2)将FMsoft增加到apt的装置服务器

运用vim编辑/etc/apt/source.list文件,在文件最结尾增加:

deb http://files.fmsoft.cn/ubuntu/ xenial restricted

保存退出后,履行指令更新apt装备。

sudo apt update

3)下载装置

履行指令下载装置:

sudo apt install libminigui-ths-dev