1.如何查看已安裝的MiniGUI是哪種模式?
打開/usr/local/include/minigui目錄下的mgconfig.h文件查看
cd /usr/local/include/minigui
vim mgconfig.h
如圖,我的MiniGUI設置的模式爲MiniGUI-Processes模式。
2.報錯解決方法集合
-
(1) 程序編譯時報錯一
開始我寫好hello.c即將編譯,運行命令gcc hello.c -o hello報錯:在xx函數中,對‘xxx’未定義的引用
解決方法:minigui中.c程序的編譯需要連接動態庫,語句改爲
$ gcc -o hello hello.c -lminigui_procs -ljpeg -lpng -lz
- (2) 程序編譯報錯二
運行(1)中的語句解決了之前的錯誤,又出現了新的錯誤
解決方法:此種報錯說明編譯時缺少某種庫(具體缺少哪一種庫需要根據報錯具體分析,注意報錯的語句中相同的關鍵字)
圖片中的報錯缺少的時freetype庫,可以先到目錄/usr/local/lib下查看是否有freetype的so文件,如果有,直接執行下面的語句,如果沒有,需要安裝相應的軟件。
$ gcc -o hello hello.c -lminigui_procs -ljpeg -lpng -lz -lfreetype
解決!
- (3) 編譯好的程序運行時./hello報錯
InitGUI(step 4):Can not start client (please run mginit first)!
解決方法:先到目錄/mg-sample-3.2.2/src下運行./mginit
注意:在啓動mginit後需要重新開一個終端,到程序所在目錄運行./hello即可成功!
- (4) 運行./mginit 時報錯一
InitGUI (step 3): There is already an instance of 'mginit'!
解決方法:
$ sudo rm /var/tmp/mginit
- (5) 運行./mginit 時報錯二
LoadSharedResource: File exists
InitGUI (step 8): Can not load shared resource
解決方法:
$ ipcs -st
多進程間通信常用的技術手段包括共享內存、消息隊列、信號量等等,Linux系統下自帶的ipcs命令是一個極好的工具,可以幫助我們查看當前系統下以上三項的使用情況,從而利於定位多進程通信中出現的通信問題。
$ ipcrm -s (semid)
注意:括號裏的semid是上一個語句查詢列出的id數字,刪除所有的信號量。