如何在 X.11 环境中开发 DirectFB 应用程序?

13

我试图开发一个嵌入式平台的GUI应用程序,但不想使用任何窗口系统,我使用DirectFB来实现,这非常适合我的需求。

由于我开发的嵌入式设备并不是很强大,因此我希望在自己的Ubuntu桌面上进行开发。问题是Framebuffer会与X.org冲突,导致我必须退出整个桌面环境,并关闭X.org才能看到我的更改结果。

有没有适合我需求的好的Framebuffer模拟器?Qt有一个叫作QVFb的模拟器,但它只适用于开发Qt应用程序,而DirectFB的VNC后端总是崩溃。

所以,有什么好的建议吗?

6个回答

17

DirectFB有一个X11后端。

$ sudo apt-get install libdirectfb-extra  # 对于Debian和Ubuntu,无论如何
$ cat ~/.directfbrc
system=x11
force-windowed

此外,DirectFB还有一个SDL后端,而SDL有一个X11后端。此外,SDL还有一个GGI后端,而GGI有一个X后端。虽然有点迂回,但应该可以工作 :)

我用以下命令进行测试:

$ SDL_VIDEODRIVER=directfb ffplay some_movie.avi

得到一个漂亮的640x480窗口,媒体播放和DirectFB处理分层和输入,所以我确定这个方法有效。


1

我使用ephemient的解决方案在chroot环境中运行DirectFB应用程序(目标文件系统由buildroot提供)以及Xnest,一个单独的X环境,它在当前X的窗口中运行。

$ Xnest -ac :1 &
$ cd $TARGET_DIR # into the target file system root
$ DISPLAY=:1 sudo chroot . usr/bin/df_neo

通过这种方式,您不仅可以确保您的directfb安装正确,而且所有所需的依赖项也已经安装在chroot文件系统中。

1

前三个答案都是很好的建议。我建议尝试ephemient的答案,因为它最简单。有关设置.directfbrc文件的更多详细信息,请查看“man directfbrc”。

另一个可能性是从X切换到另一个虚拟终端(使用CTRL+ALT+F1),运行您的directfb程序,然后切换回X(使用CTRL+ALT+F7)。


DirectFB 能够与最近基于 KMS 的 X 东西很好地协作吗? - Spudd86

0
你可以使用Moblin Image Creator创建Moblin的磁盘映像,然后在QEMU这样的虚拟机中运行它。然后你就可以在虚拟机中测试你的DirectFB应用程序了。

0

您可以在Ubuntu桌面上开发(即编辑和编译)应用程序,并在嵌入式平台上测试其运行情况。

如果嵌入式平台支持网络,您可以通过直接从NFS共享运行应用程序来缩短编辑-编译-测试循环的时间。


这就是我现在正在做的事情,但这个过程需要太多的时间。 - Edu Felipe

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接