MINIGUI常见错误集及解决方法
MINIGUI常見錯(cuò)誤集及解決方法
個(gè)人前言:其中錯(cuò)誤1到16是直接轉(zhuǎn)載的一篇博客,在移植MiniGUI過程中碰到的問題遠(yuǎn)遠(yuǎn)不止這些,我只是拿這16個(gè)先開個(gè)頭,以后會(huì)將我自己在移植MiniGUI的過程中碰到的問題逐一附上。
網(wǎng)上摘抄的版本一:
1:一般網(wǎng)上都是說動(dòng)態(tài)編譯MiniGUI,然后把編譯好的可執(zhí)行文件和 MiniGUI的庫(kù),資源文件和配置文件拷貝到linux的根文件系統(tǒng),但是如果是這樣必然還要拷貝ld.so和lib.c.so,后者相當(dāng)大,好象不太可行.我就想看看靜態(tài)編譯一個(gè)應(yīng)用程序如何,但是出錯(cuò)(動(dòng)態(tài)編譯這個(gè)應(yīng)用程序是對(duì)了的,libminigui是事先編好了的,有*.so和*.a),它報(bào)了一些數(shù)學(xué)的庫(kù)函數(shù)未解析,如sqrt等,而且是libminigui.a報(bào)的,不太明白.我想有高手靜態(tài)編譯過嗎,幫忙解決一下.多謝!!
問題找到了。
原來是在靜態(tài)編譯的時(shí)候沒有指定lm 所以數(shù)學(xué)函數(shù)庫(kù)才找不到.
arm-linux-gcc -o -static -lminigui -lpthread -lm -I /~~~/include -L /~~~/lib
肯定成功.
2:
[root@localhost bomb]# ls
bomb bomb.c bomb.o Makefile Makefile.am Makefile.in res
[root@localhost bomb]# ./bomb
AttachSharedResource: No such file or directory
Error in step 7: Can not attach shared resource!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
請(qǐng)問這是怎么回事情?謝謝
你運(yùn)行的進(jìn)程版的客戶端程序,需要在之前運(yùn)行一服務(wù)器程序mginit。
3:
交叉編譯的時(shí)候,設(shè)置項(xiàng)build=i686-pc-linux-gnu target=ppc-linux host=i386-linux這是手冊(cè)上說的 但是也有人說build=target=ppc-linux host=i686-pc-linux-gnu ,這兩種有什么區(qū)別呀?哪一種對(duì)?
去網(wǎng)站下載資料看一下,根據(jù)開發(fā)板/系統(tǒng)的不同,配置也不盡相同
4:
我在皮膚窗口中要用多MiniGUI控件-進(jìn)度條,在設(shè)定進(jìn)度條的位置時(shí),用到SendMessage函數(shù)是,第一個(gè)參數(shù)HWND,我理解應(yīng)該是進(jìn)度條控件的句柄,在皮膚窗口中用什么函數(shù)可以得到這個(gè)句柄?請(qǐng)指教!謝謝!
皮膚元素稍微特殊一點(diǎn),需要用特定的函數(shù)來獲取
HWND skin_get_control_hwnd (skin_head_t* skin,int id);
可以通過皮膚元素的id來獲取其所窗口句柄
5:
請(qǐng)問libminigui-str-1.6.2如何交叉編譯?我已正常在PC上安裝了libminigui-str-1.6.2,并且成功編譯了mde- 1.6.0,通過qvfb在PC機(jī)可以運(yùn)行了.現(xiàn)在我想移栽到ARM,看資料說要交叉編譯libminigui-str-1.6.2,并安裝,可我試過不成功.是如何交叉編譯libminigui-str-1.6.2?有比較好的資料介紹嗎?
小羅自己回答:沒有交叉編譯安裝。
6:
minigui的newgal是否支持翻轉(zhuǎn)屏。
支持,但僅在增值版中支持;我看過V 1.6.8的說明文檔,不明白要如何配置;我想要翻轉(zhuǎn)屏,可用./configure --enable-coortrans_cw 只有觸摸屏轉(zhuǎn)過來,LCD沒轉(zhuǎn)
7:
如何為主界面添加背景圖片?!急,先謝了!
使用這幾個(gè)函示即可完成。
hdc=BeginPaint(hwnd);
LoadBitmap (hdc, &bitmap, "xxx.jpg");
FillBoxWithBitmap (hdc, 0, 0, 200, 200, &bitmap);
UnloadBitmap(&bitmap);
EndPaint(hwnd,hdc);
8:
為什么MiniGUI源碼中許多函數(shù)前都有GUIAPI?例如:
void GUIAPI SetAutoRepeatMessage (HWND hwnd, int msg, WPARAM wParam, LPARAM lParam)
在頭文件common.h中,對(duì)GUIAPI的定義是
#define GUIAPI
這表示什么意思,指返回類型,還是表示可被上層應(yīng)用程序調(diào)用的函數(shù)?
請(qǐng)高手們指教,多謝:
定義調(diào)用方式而已,比如,編譯MINIGUI庫(kù)的時(shí)候,如果是采用windows下的DLL方式,則定義GUIAPI __declspec(dllexport),而編譯應(yīng)用程序的時(shí)候,定義GUIAPI 為__declspec(dllimport)就可以了。
9:
我按照xiaocong給的步驟修改了
還是不行,現(xiàn)在qvfb也大不開,下邊是報(bào)錯(cuò)信息:
QSettings: failed to open file '/usr/lib/qt-3.1/etc/settings/qt_plugins_3.1rc'
Cannot open mouse pipe
我編譯程序的時(shí)候報(bào)錯(cuò)如下:
GDI: Error in loading vbf fonts!
GDI: Can not initialize var bitmap fonts!
DESKTOP: Initialization of GDI failure!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
有知道是怎么回事的麻煩給我解釋下,謝謝.
小羅自己回答:Minicom.cfg 配置不對(duì)。
10:
error while loading shared libraries: libminigui-1.6.so.8: cannot open shared object file: No such file or directory
是怎么回事?
小羅自己回答:ld.so.conf 沒有加入 /usr/local/lib;或者沒有運(yùn)行 ldconfig;這是必須的。更新庫(kù)的鏈接。
11:
請(qǐng)大家?guī)蛡€(gè)忙,好嗎?
我在ARM92410上運(yùn)行mginit出現(xiàn)如下:
loadSharedResource: No Such file or directory
error in step8:can not load shared resourc
先把mginit運(yùn)行起來!
12:
在PC上安裝MiniGUI-STR V1.6.2時(shí)libminigui和minigui的資源時(shí)都沒出現(xiàn)錯(cuò)誤
但make應(yīng)用程序例子時(shí)出現(xiàn)下面錯(cuò)誤
helloworld.c:21:31: minigui/mywindows.h: 沒有那個(gè)文件或目錄
make[1]: *** [helloworld.o] 錯(cuò)誤
make[1]: Leaving directory `/root/mg-samples-str-1.6.2-host/src'
make: *** [install-recursive] 錯(cuò)誤 1
第一個(gè)問題:你打開helloworld.c文件,把#<mywindows.h>這句注釋掉,在編譯
13:
剛開始學(xué)minigui,配置了1.3的環(huán)境,mde運(yùn)行正常。寫了一個(gè)hello.c,
gcc -o hello hello.c -lpthread -lminigui -ljped -lpng -lz -lttf
運(yùn)行后,
‘HWND-DESKTOP’ undeclared;
'MB_OK'undecared
哪位指點(diǎn)下怎么修改?
這兩個(gè)變量沒有定義,HWND-DESKTOP 'MB_OK',
#define HWND-DESKTOP 150
#define MB_OK 160
14:
錯(cuò)誤信息如下:
./mginit: error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory
解決辦法:/usr/lib/目錄下面沒有對(duì)應(yīng)的庫(kù)文件,或者就是沒有/usr/lib/這個(gè)目錄,在/usr/目錄下面建立lib/目錄,然后拷入對(duì)應(yīng)的庫(kù)文件,就可以解決這個(gè)問題。
15:
EWGAL: Does not find matched engine: fbcon.
GDI: Can not get graphics engine information!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
修改libminigui-1.3.3/src/newgal/fbcon下的fbvideo.c
將/dev/fb0修改成/dev/fb/0
一共有兩處
16:
如果啟動(dòng)時(shí)提示init錯(cuò)誤,可以考慮給lilo傳遞init參數(shù):init=/bin/sh rw3.如果miniGUI啟動(dòng)錯(cuò)誤,考慮可能是以下原因:A)沒有啟動(dòng)framebuffer,即lilo.conf 中的vga=XXXX,顯示模式參照表如下:640x480 800x600 1024x768 1280x1024256 0x3010x3030x3050x30732k 0x3100x3130x3160x31964k 0x3110x3140x3170x31A16M 0x3120x3150x3180x31BB)啟動(dòng)了framebuffer,但無fb 設(shè)備文件,可以自己創(chuàng)建/dev/fb0文件:mknod fb0 c 29 0C)miniGUI需要/var/tmp目錄,如果不存在也會(huì)導(dǎo)致錯(cuò)誤;hMainWnd = CreateMainWindow (&CreateInfo)
17:
在執(zhí)行 ldconfig -r /opt/rootfs //配置根文件
后出現(xiàn)如下提示:
[root@dejunweb /]# ldconfig -r /opt/rootfs
ldconfig: /lib/libminigui-1.6.so.9 is not a symbolic link
ldconfig: /lib/libmgext-1.6.so.9 is not a symbolic link
ldconfig: /lib/libvcongui-1.6.so.9 is not a symbolic link
之后你會(huì)在 /opt/rootfs/etc/[ld.so.cache ld.so.conf]
?
Can not attach shared resource
Hi,
I downloaded The MiniGUI V2.0.3 Development Package, installed the rpm. When i try to run one of the examples of the example package the following error occurs:
AttachSharedResource: No such file or directory
Error in step 8: Can not attach shared resource!
I try to run the examples from a fbdeb enabled console with these environment settings:
export gal_engine=fbcon
export defaultmode=800x600-16bpp
export ial_engine=console
export mdev=/dev/mouse
export mtype=IMPS2
I have no idea of what 's going on. Any help is appreciated.
Regards,
answer:
The dev package configured MiniGUI as MiniGUI-Processes. You should run mginit first. Mginit is the server of MiniGUI-Processes. Once mginit started, you can start other client programs.
網(wǎng)上摘抄的版本2(大漠孤狼移植MiniGUI1.3.3版本):
一些常見的問題
這幾天遇到不一些問題,發(fā)現(xiàn)論壇上也基本上沒人回答我,所以只好自己解決了,這里把一些問題寫出來,方便有需要的人:
問題1:在板子上跑的程序都顯示 can not find qvfb … 之類,可是我只是想讓它在板子上跑在 FrameBuffer 之上啊?
解決:在編譯 libminigui 的時(shí)候,把
[ ] Use incore (built-in) resource //建議不要選這個(gè),老有問題
[ ] NEWGAL engine on Qt Virtual FrameBuffer //建議不要選這個(gè),不然老讓你用qvfb
問題2:編譯的時(shí)候老出現(xiàn) unreferenced to vbf_Courier8x8() 之類的問題
解決:
[ ] Var bitmap font //千萬不要選這個(gè),不然會(huì)出現(xiàn) unreferenced vfb_Courier8x8() 之類的錯(cuò)誤
問題3:一切都搞定了,可是執(zhí)行 mginit() 的時(shí)候就崩潰了,把所有的寄存器值打印了出來,然后顯示了個(gè) Abort() 就退出了!
解決:
[ ] IME (GB2312) Intelligent Pinyin module //千萬不要選這個(gè),不然后面你的 mginit 程序一啟動(dòng)就崩潰了
問題4: 為什么我執(zhí)行 helloword 就顯示 “Can not attach shared resource!”
解決:
注意: 因?yàn)槟愕?minigui 是按 Lite 模式編譯的,如果必須 mginit 首先運(yùn)行起來,你其它的程序(比如 bomb ,或是 helloword)才能執(zhí)行,如果 mginit 沒有運(yùn)行起來你就執(zhí)行 helloword 的話,就會(huì)顯示錯(cuò)誤
“ Can not attach shared resource ! ”
問題5:怎么把自己的程序加到 minigui 的 taskbar 上去,并且排在前面??
解決:
查看 mginit 目錄下的 mginit.rc 文件,里面就是配置,我想你能看明白的:)
問題6:為什么我的程序顯示 can not find libminigui.so ??
解決:你是否忘了在 etc/ld.so.conf 中加入 /usr/local/lib ,并且執(zhí)行 ldconfig 程序? 看前面說的方法
網(wǎng)上摘抄的版本3:
MiniGUI初始化一些問題以及解決辦法。
按照以上的方法運(yùn)行mginit的時(shí)候會(huì)出現(xiàn)一些問題,按照上面MiniGUI.cfg配置運(yùn)行的話會(huì)出現(xiàn):
問題1
[root@FriendlyARM mginit]# ./mginit
640x480 LCD
GAL ENGINE: Can't open /dev/tty0: No such file or directory
NEWGAL: Set video mode failure.
Error in step 3: Can not initialize graphics engine!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
解決方法:
#mknod /dev/tty0 c 4 0
這樣在運(yùn)行mginit的時(shí)候還會(huì)有錯(cuò)誤,如下:
問題2
LoadSharedResource: No such file or directory
Error in step 7: Can not load shared resource!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
[root@FriendlyARM mginit]#
解決方法:
mkdir /var/tmp
這樣就可以看到minigui初步界面了,如果強(qiáng)制退出的話,在下次運(yùn)行mginit的話會(huì)出現(xiàn)下面的問題:
問題3:
Error in step 3: There is already an instance of 'mginit'!
解決方法:
刪除/var/tmp目錄下的2個(gè)minigui的文件。
?
自己在進(jìn)行MiniGUI移植的時(shí)候所碰到的問題:?
首先是移植MiniGUI1.6.10到ARM平臺(tái)(YLP2440開發(fā)板)上所碰到的問題
1:新安裝好的ubuntu9.10并不適合研究開發(fā),需要裝一些必需到依賴文件(具體見嵌入式軟件開發(fā)及C語言實(shí)現(xiàn)-MiniGUI剖析一書的附錄),否則在LINUX Pc上安裝minigui與qvfb老出錯(cuò).
2:安裝依賴庫(kù)。
比較難安裝的是jpeg與ttf,jpeg見前面所提到的第二篇參考文章,ttf需要全手動(dòng)安裝,見大漠孤狼文章。
3:參考大漠孤狼移植MiniGUI文章的時(shí)候的一些細(xì)節(jié):
參考文章中提到要手動(dòng)修改GCC,LD等,還建立軟連接與備份等,事實(shí)證明在本次實(shí)驗(yàn)中并不需要,如libz,參考文章說不支持交叉編譯,經(jīng)我實(shí)驗(yàn),本次用到到zlib1.2.3支持,所以關(guān)于文章中建立GCC的符號(hào)鏈接與備份可略去不看。
還有文章說minigui1.33在鏈接庫(kù)時(shí)老鏈接/usr/lib下,這個(gè)1.6.10沒有這個(gè)問題。
再有交叉編譯minigui時(shí),大漠孤狼文章中用的是1.33,支持圖形化配置,1.6.10不支持圖形化配置,只能用寫腳本來配置。
4 :制作根文件系統(tǒng)。
看到好多參考文章上說,直接能把板子上的庫(kù),配置文件等考到相應(yīng)的目錄下,但是YLP2440開發(fā)板所提供的根文件系統(tǒng)是CRAMFS格式的,在燒到板子上之后不能對(duì)目錄下的文件進(jìn)行拷貝,移動(dòng),修改等操作。所以我不得不自己做一個(gè)根文件系統(tǒng)。
在做根文件系統(tǒng)中,重點(diǎn)是用busybox生成系統(tǒng)程序與系統(tǒng)初始化,系統(tǒng)程序是編譯完busybox后自動(dòng)生成的,而系統(tǒng)初始化需要自己來完成,主要是兩個(gè)文件:inittab與fstab.具體制作請(qǐng)參考嵌入式軟件開發(fā)及C語言實(shí)現(xiàn)-MiniGUI剖析一書中2.7.4構(gòu)建根文件系統(tǒng)一節(jié)。另外需要minigui應(yīng)用程序所需要到鏈接庫(kù),Minigui配置文件,Minigui資源文件,其中Minigui配置文件的IAL,GAL需根據(jù)實(shí)際板子來調(diào)。
5:制作根文件系統(tǒng)時(shí),如果沒有/etc/inittab與/etc/fstab文件,即沒有做系統(tǒng)初始化工作,則進(jìn)不了根文件系統(tǒng),老報(bào)以下錯(cuò)誤:unable to open an initial console
6 :如果出現(xiàn)以下錯(cuò)誤:
NEWGAL:Does not found matched engine:fbcon
InitGUI:can not get graphics engines information
則應(yīng)該在PC上交叉編譯minigui之前在libminigui1.6.10/src/newgal/fbcon目錄下修改fbvideo.c文件,將出現(xiàn)的/dev/fb0修改為/dev/fb/0(注:一共有兩處需要修改)
至于修改的原因我認(rèn)為是因?yàn)樵O(shè)備文件系統(tǒng)的問題,詳情請(qǐng)見劉淼編的嵌入式系統(tǒng)接口設(shè)計(jì)與LINUX驅(qū)動(dòng)程序開發(fā)一書中第二章2.4.3節(jié)17頁(yè)關(guān)于devfs的一些問題。
7:若出現(xiàn)NEWGAL>FBCON:can't open /dev/tty0 No such file or directory
NEWGAL:set video mode failure
InitGAL:cannot initialize graphics engine!
則在/etc/init.d/rcS中添加/bin/ln -s /dev/vc/0?? /dev/tty0即可
8:如果minigui庫(kù)和安裝的依賴庫(kù)在/usr/local/lib目錄下,則一定要在ld.so.conf中加入了/usr/local/lib,并執(zhí)行ldconfig -r /opt/rootfs.目的是讓Minigui應(yīng)用程序找到所需要鏈接的庫(kù)。
然后是將MiniGUI1.6.10移植到SPARC平臺(tái)(gr-xc3s-1500即LEON3開發(fā)板):??
這個(gè)移植的非常順利,原因如下:有賀明師兄移植成功的經(jīng)驗(yàn)與日志可參考;賀明師兄移植時(shí)候交叉編譯的各種庫(kù)可以拿來直接用;LEON3的操作系統(tǒng)操作起來非常方便,它把bootloader,kernel,fs做到一起了,而且fs是initramfs,在將操作系統(tǒng)燒到板子上后,可以對(duì)目錄下的文件進(jìn)行各種操作(復(fù)制,移動(dòng),修改等),這樣就免去了自己做根文件系統(tǒng)的麻煩;移植過程中,只需在MiniGUI.cfg文件中修改輸入輸出引擎即可,無須額外添加輸入輸出引擎了,方便的很;
?
碰到的問題:??
1:LEON板子NFS老是出問題,后來查出是LEON硬件配置的問題
2:LEON板子跑MiniGUI應(yīng)用程序顯示的界面不全,只有窗口框架與光標(biāo),無控件與菜單,后查出亦是LEON硬件配置的問題
3: LEON板子在unbuntu9.10上軟件配置,make時(shí),出現(xiàn)與sumvision文件有關(guān)的錯(cuò)誤時(shí),在sumvision.c文件中添加#include<limits.h>,即可編譯通過
3:LEON板子軟件配置后,出不來字符終端界面,后查出是在軟件配置時(shí),在VGA顯示上將x寫成*,系統(tǒng)不識(shí)別的緣故
4:出現(xiàn)relocation error:/lib/libpthread.so.0:symbol_errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference.
解決辦法:建立libpthread.so向libpthread.so.0的符號(hào)鏈接,即ln -s ./libpthread.so.0 ./libpthread.so
總結(jié)
以上是生活随笔為你收集整理的MINIGUI常见错误集及解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse下搭建C语言开发环境
- 下一篇: 面向对象的4个基本特征