手把手教你安裝MINIGUI編程環(huán)境 (MINIGUI版本3.2.0)
0. MINIGUI
MiniGUI 是一款面向嵌入式系統(tǒng)的高級(jí)窗口系統(tǒng)(Windowing System)和圖形用戶界面(Graphical User Interface,GUI)支持系統(tǒng),由魏永明先生于 1998 年底開(kāi)始開(kāi)發(fā)。
2002 年,魏永明先生創(chuàng)建北京飛漫軟件技術(shù)有限公司,為 MiniGUI 提供商業(yè)技術(shù)支持,同時(shí)也繼續(xù)提供開(kāi)源版本,飛漫軟件是中國(guó)地區(qū)為開(kāi)源社區(qū)貢獻(xiàn)代碼最多的軟件企業(yè)。最后一個(gè)采用 GPL 授權(quán)的 MiniGUI 版本是 1.6.10,從 MiniGUI 2.0.4 開(kāi)始 MiniGUI 被重寫并使用商業(yè)授權(quán)。
一、安裝準(zhǔn)備
1. 軟件版本
安裝MINIGUI編程環(huán)境
- MINIGUI版本3.2.0
- 安裝系統(tǒng):Ubuntu16.04
不得不說(shuō),MINIGUI的安裝實(shí)在過(guò)于復(fù)雜,借此文安慰一下我歷經(jīng)7小時(shí)苦痛折磨的靈魂,整理一下我的安裝與配置的過(guò)程(從0到運(yùn)行helloworld程序),同時(shí)為后輩員工提供一點(diǎn)指導(dǎo)和幫助。
2. 下載地址
本文參照MINIGUI的官方安裝文檔,文檔地址:http://www.minigui.com/blog/minigui-3.2.0-released/
操作系統(tǒng)請(qǐng)選用Ubuntu 16.04版,使用最新的Ubuntu可能會(huì)在安裝過(guò)程中出現(xiàn)各種“奇怪的”錯(cuò)誤(真是奇怪的錯(cuò)誤,至今不知道怎么修復(fù)……)
二、安裝前的準(zhǔn)備工作
假設(shè)你已成功安裝Ubuntu16.04操作系統(tǒng)
1、安裝各種依賴軟件
你需要確保已經(jīng)安裝以下軟件。若未安裝,則可以執(zhí)行sudo apt-get install 軟件名進(jìn)行安裝。
- 1) git
- 2) gcc/g++
- 3) binutils
- 4) autoconf/automake
- 5) libtool
- 6) make
- 7) cmake
- 8) pkg-config
2、安裝各種依賴庫(kù)
你需要確保已經(jīng)安裝以下依賴庫(kù)。若未安裝,則可以執(zhí)行sudo apt-get install 庫(kù)名進(jìn)行安裝。
- 1) libgtk2.0-dev
- 2) libjpeg-dev
- 3) libpng12-dev
- 4) libfreetype6-dev
- 5) libsqlite3-dev
- 6) libxml2-dev
3、配置Github的認(rèn)證密鑰
由于接下來(lái)需要從Github上克隆MINIGUI的安裝包,因此這里需要配置Github的密鑰認(rèn)證。
首先去Github上注冊(cè)一個(gè)賬號(hào)。注冊(cè)是免費(fèi)的。記住注冊(cè)時(shí)填寫的郵箱。
然后在Ubuntu上,執(zhí)行命令:
- ssh-keygen -t rsa -C(大寫) 你的郵箱地址
執(zhí)行該指令后會(huì)有提示信息。第一個(gè)提示信息表示生成的公鑰私鑰的保存位置。一般普通用戶保存在~/.ssh內(nèi),root用戶保存在/root/.ssh內(nèi)(目錄是隱藏的)。第二個(gè)提示信息表示登入密碼,直接按回車即可(表示不需要密碼)。第三個(gè)提示信息表示確認(rèn)密碼,也是直接按回車即可。生成公鑰私鑰后,進(jìn)入.ssh目錄內(nèi),查看id_rsa.pub的內(nèi)容。進(jìn)入Github,在賬號(hào)內(nèi)找到Settings,點(diǎn)擊New SSH key,將id_rsa.pub的內(nèi)容復(fù)制到文本框內(nèi),注意不要有遺漏否則會(huì)認(rèn)證失敗。
添加完畢后,在Ubuntu內(nèi)執(zhí)行ssh -T git@github.com測(cè)試連接是否成功。如果出現(xiàn)歡迎信息則表示連接Github成功。若出現(xiàn)Permission denied則表示連接失敗。連接失敗可能是公鑰私鑰配置未生效。執(zhí)行ssh-add ~/.ssh/id_rsa將剛才生成的公鑰私鑰添加到Github內(nèi),再次測(cè)試即可。
三、下載完全版的MINIGUI安裝包
使用git的clone(克隆)功能獲取完整的MINIGUI3.2的代碼文件。執(zhí)行命令:
- git clone git@github.com:VincentWei/build-minigui-3.2.git
VincentWei是MINIGUI的發(fā)明人和維護(hù)者。
獲取完畢后,進(jìn)入build目錄
- cd build-minigui-3.2
運(yùn)行該目錄下的fetch腳本獲取全部的MINIGUI的源代碼。
- ./fetch-all.sh
等待下載完成即可。
四、安裝過(guò)程
以下目錄,若未特殊說(shuō)明,皆以build-minigui-3.2作為基準(zhǔn)目錄
1、安裝gvfb依賴庫(kù)
進(jìn)入gvfb目錄。依次執(zhí)行以下命令:
- cmake . (注意這個(gè)點(diǎn)(當(dāng)前目錄)不要忽略)
- make
- sudo make install
2、安裝chipmunk依賴庫(kù)
進(jìn)入3rd-party/chipmunk-5.3.1目錄。依次執(zhí)行以下命令:
- cmake . (注意這個(gè)點(diǎn)(當(dāng)前目錄)不要忽略)
- make
- sudo make install
3、編譯MINIGUI源代碼
進(jìn)入minigui-res目錄。依次執(zhí)行以下命令:
- ./autogen.sh
- ./configure
- sudo make install
4、建立所有代碼
回到build-minigui-3.2目錄內(nèi),執(zhí)行命令:
- ./build-all.sh
等待build完成。
四、驗(yàn)證安裝是否成功
等待build完成,若無(wú)報(bào)錯(cuò)信息,則表示成功安裝了MINIGUI3.2編程環(huán)境。我們可以用兩種方法驗(yàn)證是否安裝成功。
方法一:
進(jìn)入到/usr/local/bin目錄,發(fā)現(xiàn)該目錄內(nèi)有一個(gè)名為./mguxdemo的程序。運(yùn)行該程序。該程序是一個(gè)使用MINIGUI編寫的類手機(jī)系統(tǒng)的應(yīng)用程序,若可以運(yùn)行該程序且無(wú)崩潰、無(wú)報(bào)錯(cuò),則表示MINIGUI安裝成功。
方法二:
進(jìn)入到mg-sample目錄。在該目錄執(zhí)行命令:
- ./configure
- make
然后進(jìn)入到當(dāng)前目錄下的same目錄,運(yùn)行same程序
- ./same
該程序是一個(gè)消除小游戲。
注意:編譯過(guò)程中可能會(huì)報(bào)錯(cuò),再次執(zhí)行一次./build-all.sh腳本即可。
五、編寫helloworld程序
接下來(lái)編寫一個(gè)helloworld程序。代碼參照《miniGUI編程指南》V3.0第二章的程序,但是稍有改動(dòng)(主要是取消了進(jìn)程模式改成線程模式)。代碼如下:
- #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;
- }
然后運(yùn)行g(shù)cc進(jìn)行編譯,但是要注意需要鏈接各種動(dòng)態(tài)庫(kù)。編譯命令如下:
- gcc xxx.c -o xxx -lminigui_ths -ljpeg -lpng -lz -lpthread -lfreetype
其中:
1)lminigui_ths:MINIGUI在線程模式下運(yùn)行需要的依賴庫(kù)。注意該參數(shù)必須放在第一個(gè)因?yàn)樗枰蕾嚭罄m(xù)的各種動(dòng)態(tài)庫(kù)。如果編譯器顯示無(wú)法找到該庫(kù),則參照下面的方法安裝這個(gè)庫(kù)。//使用gcc編譯時(shí)需要注意,若庫(kù)A依賴庫(kù)B,則A必須處在B的前面。
2)-ljpeg、-lpng:jpeg和png格式的圖像支持庫(kù)
3)-lz:數(shù)據(jù)壓縮庫(kù)
4)-lpthread:線程庫(kù)
5)-lfreetype:字體庫(kù) 運(yùn)行結(jié)果如下:
六、libminigui_ths的安裝
過(guò)程如果在編譯時(shí)提示缺少minigui_ths庫(kù),則可以按以下步驟安裝。
1)獲取FMsoft的GPG密鑰
由于minigui_this庫(kù)需要使用apt-get在MINIGUI的官方下載安裝,因此需要事先獲取他們的認(rèn)證。執(zhí)行命令:
- wget -qO - http://files.fmsoft.cn/ubuntu/key/fmsoft.gpg | sudo apt-key add -
注意第二個(gè)可選項(xiàng)是大寫字母歐
2)將FMsoft添加到apt的安裝服務(wù)器
使用vim編輯/etc/apt/source.list文件,在文件最末尾添加:
- deb http://files.fmsoft.cn/ubuntu/ xenial restricted
保存退出后,執(zhí)行命令更新apt配置。
- sudo apt update
3)下載安裝
執(zhí)行命令下載安裝:
- sudo apt install libminigui-ths-dev
本文轉(zhuǎn)載自微信公眾號(hào)「一口Linux」