手把手教你在FC6下完全自己编译MiniGUI(模拟环境)(EL-ARM-830)-------qvfb

 

由于是模拟环境搭建起来格外简单,在此就不啰嗦了,况且开发板上有有关的文档。

你也可以参照大漠孤狼 MiniGUI 1.3.3 移植详解这篇文章,goolge一下,遍地都是。

值得说明的是几处在FC6下会出现的错误:

实际操作在FC6下出现的问题的解决办法:

1、由于FC6 gcc版本高问题,在编译MiniGui的lib库时会报错,错误信息如下:

a)      grid.c: In function 'AddCol':
grid.c:626: error: invalid lvalue in assignment
grid.c:627: error: invalid lvalue in assignment
grid.c:638: error: invalid lvalue in assignment
grid.c:639: error: invalid lvalue in assignment
grid.c:667: error: invalid lvalue in assignment
grid.c:668: error: invalid lvalue in assignment
grid.c:680: error: invalid lvalue in assignment
grid.c:681: error: invalid lvalue in assignment
grid.c: In function 'AddRow':
grid.c:733: error: invalid lvalue in assignment
grid.c:734: error: invalid lvalue in assignment
grid.c:745: error: invalid lvalue in assignment
grid.c:746: error: invalid lvalue in assignment
grid.c:774: error: invalid lvalue in assignment
grid.c:775: error: invalid lvalue in assignment
grid.c:788: error: invalid lvalue in assignment
grid.c:789: error: invalid lvalue in assignment
make[3]: *** [grid.lo]
错误 1
make[3]: Leaving directory `/home/work1/minigui/libminigui-1.3.3/ext/control'
make[2]: *** [all-recursive]
错误 1
make[2]: Leaving directory `/home/work1/minigui/libminigui-1.3.3/ext'
make[1]: *** [all-recursive]
错误 1
make[1]: Leaving directory `/home/work1/minigui/libminigui-1.3.3'
make: *** [all]
错误 2
出错文档是位于ext/control/下的grid.c,可能是编译器版本太高了,才会出现这样的错误。
解决方法:
grid.c中任何类似这样的代码:
   (PGRIDCOLHDR)pCell1->pRowHdr = pRowHdr;
   (PGRIDCOLHDR)pCell1->pColHdr = pCol1;
将前面的强制类型转换去掉就能够编译通过了。

b)      启动程式时出错:
NEWGAL: Set video mode failure.
GDI: Can not initialize graphics engine!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
Video mode smaller than requested
原因:qvfb中的显示配置和MiniGUI.cfg中的显示配置不相同所致,修改成相同就能够了。

c)      启动程式时出错:GAL: Does not find matched engine.
GDI: Can not get graphics engine information!
InitGUI failure when using incore resource.
原因:在配置MiniGUI时没有选择qvfb选项或没有选择需要的位深支持,进入make menuconfig中的“GAL engine options”,选上“Native GAL engine on Linux FrameBuffer console”“Native GAL engine on Qt Virtual FrameBuffer”和需要的位深模式(如“16BPP FB”)后重新编译即可。
3. 我自己写了一个程式,但是在编译时提示:linux:/home/work1/app # gcc -o hello hello.c -lpthread -lminigui
/usr/local/lib/libminigui.so: undefined reference to `CustomizeDesktopMenu'
/usr/local/lib/libminigui.so: undefined reference to `CustomDesktopCommand'
collect2: ld returned 1 exit status
原因:我使用的是MiniGUI-Thread(在make menuconfig中指定),程式中没有包含必须的minigui/dti.c,所以会出错。

d)      . /usr/local/lib/libminigui.so: undefined reference to `pthread_kill_other_threads_np'
原因:删除 MiniGUI 源代码中调用'pthread_kill_other_threads_np'这个函数
的语句。应该在 src/kernel/init.c 文档中,也可以运行 grep 找一下这个函数。

出处:http://hi.baidu.com/luv%5Fresplendent/modify/blog/e08e62ce7eefb30592457eef

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值