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数字,删除所有的信号量。