DirectFB 例子运行出错!
DirectFB 例子运行出错!
~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.4.3 |~~~~~~~~~~~~~~~~~~~~~~~~~~
(c) 2001-2009 The world wide DirectFB Open Source Community
(c) 2000-2004 Convergence (integrated media) GmbH
----------------------------------------------------------------
(*) DirectFB/Core: Multi Application Core. (2010-07-14 12:51) [ DEBUG ][ TRACE ]
(*) Fusion/SHM: Using MADV_REMOVE (2.6.32.15 >= 2.6.19.2)
(!) Fusion/Init: Could not enter world '0'!
--> 无效的参数
(-) [24963: -STACK- ]
#0 0x003d4820 in fusion_enter () from /opt/lib/libfusion-1.4.so.0 [0x3cb000]
#1 0x00a832a0 in dfb_core_create () from /opt/lib/libdirectfb-1.4.so.0 [0xa06000]
#2 0x00a15b30 in DirectFBCreate () from /opt/lib/libdirectfb-1.4.so.0 [0xa06000]
(#) DirectFBError [gdk_display_open: DirectFBCreate]: Initialization error!
(lt-gtk-demo:24963): Gtk-WARNING **: cannot open display: :0.0
运行DirectFB例子出现上面的错误, 在编译DirectFB的时候,不加--enable-multi选项没有上面的错误,但是会caught signal 5 退出,加上--enable-multi就会出现上面上面的错误,哪位大侠给解释下为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
问题已经全部解决,可以调试了!
回复 6# nketc
我以前好像记得在配置文件中加no-vt就好用的,是不是有个类似的方法。 真是非常感谢您每次的回答啊!
本帖最后由 nketc 于 2010-07-18 16:15 编辑
回复 5# liujunwei1234
在HOME下添加一个文件:.directfbrc 在里面写上mode=withxheight 试试吧。但是我觉得这样可能也不行,因为directfb起来后终端就被占用了。如果你不调试fb的话,可以把directfb配置为使用x11后端。这样用gdb调试就很方便了。
我调试fb的时候是在虚拟机里搭建来directfb+gtk的环境,然后远程gdb调试的。
回复 4# nketc
你好,再问你一个问题阿。我现在环境搭好了,想对gtk-demo进行调试,但是调试时候,DirectFB跑起来后,是一个全屏的窗口,无法再切换回gdb的命令行。怎么设置以下,才能不让DirectFB是全屏的。
我是在2.6.31的kernel上用的linux-fusion 8.0.3,directfb1.4.2。单进程多进程都没问题。其他的fusion版本好像有和lz类似的问题:符号未定义。还有几个版本的fusion引用的头文件内核中好像没有,要自己修改一下源代码才能用。
但进程模式下lz可以用gdb跟踪一下,或把出错的详细信息发上来,或许有人能解决。
回复 2# nketc
谢谢您的回答,我也知道是fusion的问题。因为在Linux-2.6.32上linux-fusion可以编译过,但是在安装的时候会提示tasklist_lock没有定义,同样的在modprobe fusion的时候,也是因为tasklist_lock这个符号没有定义而无法加载这个模块。tasklist_lock在现在的内核中确实不作为导出符号了,确实是没有定义的,从而导致fusion模块根本无法加载。 请问楼主有没有好的建议。
我就是想既然fusion模块不能加载,就不用fusion模块了,所以--enable-multi=no,但这样又会出现caught signal 5的错误。
加--enable-multi表示启用多进程支持。多个进程同时使用directfb需要另外的一个软件模块fusion。它是一个内核模块,用于directfb的进程间通信。官网上有fusion。
看上面的样子是你没有编译fusion。编译fusion,把模块插入内核后,在 /proc/fusion会有directfb的信息。另外确认/dev下创建来设备节点。这在fusion的readme中都有。