http://www.armfans.net/thread-640-1-3.html


MiniguiPC端編譯和qvfb編譯






步驟一:裝載libminigui-1.3.3


linux:/home/work/minigui # cd libminigui-1.3.3/


linux:/home/work/minigui/libminigui-1.3.3 # make menuconfig


將“Font options”中的“Var bitmap font”選項去掉,否則報報下面錯誤一


linux:/home/work/minigui/libminigui-1.3.3 # make


linux:/home/work/minigui/libminigui-1.3.3 # make install


預設配置下將裝載到/usr/local/目錄下,可以在make menuconfig中修改“Development environment options”中的“Path prefix”來指定裝載目錄。如果使用其他目錄,則需要注意相關的目錄必須添加進環境PATH變數中,否則在編譯MiniGUI應用程式時會出現找不到包含檔案等錯誤資訊。


接着要執行ldconfig加載新生成的鏈結程式庫,否則將會出現類似找不到“libminigui-1.3.so.3”的錯誤訊息。






出錯記錄:::


(1)


varbitmap.c:248: error: static declaration of 'var_bitmap_font_ops' follows non-static declaration




具體錯誤如下:


source='varbitmap.c' object='varbitmap.lo' libtool=yes \


depfile='.deps/varbitmap.Plo' tmpdepfile='.deps/varbitmap.TPlo' \


depmode=gcc3 /bin/sh ../../depcomp \


/bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../include -g -O2 -D__MINIGUI_LIB__ -D_REENTRANT -O2 -Wall -Wstrict-prototypes -pipe -DNDEBUG -c -o varbitmap.lo `test -f 'varbitmap.c' || echo './'`varbitmap.c


rm -f .libs/varbitmap.lo


gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../include -g -O2 -D__MINIGUI_LIB__ -D_REENTRANT -O2 -Wall -Wstrict-prototypes -pipe -DNDEBUG -c varbitmap.c -MT varbitmap.lo -MD -MP -MF .deps/varbitmap.TPlo -fPIC -DPIC -o .libs/varbitmap.lo


varbitmap.c:248: error: static declaration of 'var_bitmap_font_ops' follows non-static declaration


varbitmap.h:38: error: previous declaration of 'var_bitmap_font_ops' was here


make[4]: *** [varbitmap.lo] 錯誤 1


make[4]: Leaving directory `/home/source/minigui/minigui1.3.x/libminigui-1.3.3/src/font'


make[3]: *** [all-recursive] 錯誤 1


make[3]: Leaving directory `/home/source/minigui/minigui1.3.x/libminigui-1.3.3/src/font'


make[2]: *** [all-recursive] 錯誤 1


make[2]: Leaving directory `/home/source/minigui/minigui1.3.x/libminigui-1.3.3/src'


make[1]: *** [all-recursive] 錯誤 1


make[1]: Leaving directory `/home/source/minigui/minigui1.3.x/libminigui-1.3.3'


make: *** [all] 錯誤 2




出錯原因:


src/font/varbitmap.h中定義了extern FONTOPS var_bitmap_font_ops,那裡var_bitmap_font_opsextern類別的,而在src/font/varbitmap.c中定義的是static類別,所以可能造成了編譯的出錯。




解決方法如下:(1)


修改src/font/varbitmap.c檔案:


//static FONTOPS var_bitmap_font_ops = {


extern FONTOPS var_bitmap_font_ops = { // wmmwang 修改


(2)


重新執行make menuconfig,將“Font options”中的“Var bitmap font”選項去掉即可:


│ │


Raw bitmap font │ │


│ │ [ ] Var bitmap font │ │


│ │


Incore font sansserif │ │


│ │


Incore font courier │ │


│ │


Incore font symbol │ │


│ │


Incore font vgas │ │


│ │


Qt Prerendered Font │ │


│ │


TrueType font │ │


│ │


Adobe Type1 font │ │


(2)


source='grid.c' object='grid.lo' libtool=yes \


depfile='.deps/grid.Plo' tmpdepfile='.deps/grid.TPlo' \


depmode=gcc3 /bin/sh ../../depcomp \


/bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I./ -I../include -I../../include -g -O2 -D__MINIGUI_LIB__ -D_REENTRANT -O2 -Wall -Wstrict-prototypes -pipe -DNDEBUG -c -o grid.lo `test -f 'grid.c' || echo './'`grid.c


rm -f .libs/grid.lo


gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I./ -I../include -I../../include -g -O2 -D__MINIGUI_LIB__ -D_REENTRANT -O2 -Wall -Wstrict-prototypes -pipe -DNDEBUG -c grid.c -MT grid.lo -MD -MP -MF .deps/grid.TPlo -fPIC -DPIC -o .libs/grid.lo


grid.c: In function 'AddCol':


grid.c:626: error: invalid lvalue in assignment


grid.c:627: error: invalid lvalue in assignment


grid.c:640: error: invalid lvalue in assignment


grid.c:641: error: invalid lvalue in assignment


grid.c:669: error: invalid lvalue in assignment


grid.c:670: error: invalid lvalue in assignment


grid.c:682: error: invalid lvalue in assignment


grid.c:683: error: invalid lvalue in assignment


grid.c: In function 'AddRow':


grid.c:735: error: invalid lvalue in assignment


grid.c:736: error: invalid lvalue in assignment


grid.c:747: error: invalid lvalue in assignment


grid.c:748: error: invalid lvalue in assignment


grid.c:776: error: invalid lvalue in assignment


grid.c:777: error: invalid lvalue in assignment


grid.c:790: error: invalid lvalue in assignment


grid.c:791: error: invalid lvalue in assignment


make[3]: *** [grid.lo] 錯誤 1


make[3]: Leaving directory `/home/source/minigui/minigui1.3.x/libminigui-1.3.3/ext/control'


make[2]: *** [all-recursive] 錯誤 1


make[2]: Leaving directory `/home/source/minigui/minigui1.3.x/libminigui-1.3.3/ext'


make[1]: *** [all-recursive] 錯誤 1


make[1]: Leaving directory `/home/source/minigui/minigui1.3.x/libminigui-1.3.3'


make: *** [all] 錯誤 2


出錯原因:


未知。可能是編譯器版本太高的緣故。


解決方法如下:


將上面出錯的grid.c檔案中對應行數的強制轉換去掉。例如grid.c626627行修改如下:


//(PGRIDCOLHDR)pCell1->pRowHdr = pRowHdr; // wmmwang 修改


//(PGRIDCOLHDR)pCell1->pColHdr = pCol1;


pCell1->pRowHdr = pRowHdr;


pCell1->pColHdr = pCol1;


其他出錯行同上修改。




步驟二:裝載裝載MiniGUI的資源包:


linux:/home/work/minigui/libminigui-1.3.3 # cd ../


linux:/home/work/minigui # cd minigui-res-1.3.3/


linux:/home/work/minigui/minigui-res-1.3.3 # make install


這一步一般不會出錯




步驟三:裝載mg-samples-1.3.1


linux:/home/work/minigui/qvfb-1.0 # cd ../mg-samples-1.3.1/


linux:/home/work/minigui/mg-samples-1.3.1 # ./configure


linux:/home/work/minigui/mg-samples-1.3.1 # make


linux:/home/work/minigui/mg-samples-1.3.1 # make install






出錯記錄:(3


. /usr/local/lib/libminigui.so: undefined reference to `pthread_kill_other_threads_np'




原因:移除 MiniGUI 來源碼中呼叫'pthread_kill_other_threads_np'這個函數


的敘述。應該在 src/kernel/init.c 文件中,也可以執行 grep 找一下這個函數。




步驟四:裝載綜合例子mde-1.3.0


linux:/home/work/minigui/qvfb-1.0 # cd ../mde-1.3.0/


linux:/home/work/minigui/mde-1.3.0 # ./configure


linux:/home/work/minigui/mde-1.3.0 # make


linux:/home/work/minigui/mde-1.3.0 # make install




步驟五:裝載qvfb


linux:/home/work/minigui # cd minigui-res-1.3.3/


linux:/home/work/minigui/minigui-res-1.3.3 # cd ../qvfb-1.0/


linux:/home/work/minigui/qvfb-1.0 # ./configure --with-qt-includes=/usr/lib/qt-3.3/include --with-qt-libraries=/usr/lib/qt-3.3/lib --with-qt-dir=/usr/lib/qt-3.3


(略過匯出資訊...


linux:/home/work/minigui/qvfb-1.0 # make


(略過匯出資訊...


linux:/home/work/minigui/qvfb-1.0 # make install


(略過匯出資訊...




出錯記錄:(4


./configure時會報錯:


checking for libpng... -lpng -lz -lm


checking for libjpeg6b... no


checking for libjpeg... -ljpeg


checking for Qt... configure: error: Qt (>= Qt 3.0.3) (headers and libraries) not found. Please check your installation!


For more details about this problem, look at the end of config.log.


由于在fc7在預設是沒有完全裝載qt的,所以需要裝載一個軟體,這個可以通過你的虛擬機加載fedora7的鏡像檔案,然后在fedora7cdrom中直接開啟得到,即光碟下的feodra檔案夾下的qt-devel-3.3.8-4.fc7.i386.rpm,點擊裝載






步驟六:minigui演示:


1)進入/usr/local/etc/,將minigui.cfg修改為:


system]


# GAL engine


gal_engine=qvfb


# IAL engine


ial_engine=qvfb


mdev=/dev/mouse


mtype=IMPS2


[fbcon]


defaultmode=1024x768-16bpp


[qvfb]


defaultmode=640x480-16bpp


display=0


2)進入/etc/ld.so.conf.d建一個minigui.conf,檔案的內容為/usr/local/lib


最后要把系統共用程式庫緩衝區清除,將libminigui加載上,可以使用指令


[root@fedora7]#ldconfig


否則在執行應用程式時會報如下錯:


./bomb


./bomb: error while loading shared libraries: libminigui-1.3.so.3: cannot open shared object file: No such file or directory




執行ldconfig後發現他是要 symbolic link 手動改一下吧


root@ubuntu:/mnt/hgfs/vm_disk/minigui/minigui-pda/minigui-pda# ldconfig


/sbin/ldconfig.real: /usr/local/lib/libminigui-1.3.so.3 is not a symbolic link


/sbin/ldconfig.real: /usr/local/lib/libvcongui-1.3.so.3 is not a symbolic link


/sbin/ldconfig.real: /usr/local/lib/libmgext-1.3.so.3 is not a symbolic link






3)然后就可以使用qvfb體驗miniGUI了,進入qvfb1.0根目錄下的qvfb檔案夾,匯入下面指令:


[root@fedora7]# qvfb &


加上&象徵式使qvfb程式開啟后shell立即傳回,否則會阻塞shell程式,需要再開一個shell才可以執行minigui程式。qvfb執行起來后在qvfb中設定虛擬察看器解析度:File-->Configure,注意SizeDepth要設定的同MiniGUI.cfg中的解析度和色深一致。


4qvfb設定搞定后就可以執行mg-smaples-1.6.2/src中的例子了,執行一個helloworld試試效果


[root@localhost minigui-pc]# cd mde-1.3.0


[root@localhost mde-1.3.0]# cd bomb


[root@localhost bomb]# ./bomb


這時在qvfb介面上就出現了我們熟悉的掃雷畫面了,o(∩_∩)o...哈哈

全站熱搜

立你斯 發表在 痞客邦 留言(0) 人氣()