当没有X窗口环境时,自包含GTK应用程序

我正在使用一个非常简化的Linux版本,我想在没有安装X窗口环境的系统上创build一个自包含的GTK应用程序。 我想使用GTK GUI类和小部件,而不是在禁用GUI的情况下创build服务器版本。

你可以期待的唯一的事情就是工作的glibc。

从我的理解,将涉及以下内容:

  • 静态链接GTK库与X库。
  • 静态链接我的应用程序与上述库。

    有什么需要注意的吗,一个(有点)新手是否可以完成。 我用谷歌,但(一些可用的)信息飞过我的头。

  • GTK和X是独立的程序。 您通常需要安装两个程序才能正常工作。 或者,您可以通过切换GTK for GTKfb来使用Linux帧缓冲区。 如果您不想分发这些库,则需要静态编译GTKfb及其依赖项。 仔细阅读LGPL,如果你这样做。 红帽有一篇关于用GTKfb构建小型应用程序的论文: http : //www.redhat.com/f/pdf/gtkfb.pdf 。

    X库是用于连接到X11服务器的X11客户端库。 您的设备不运行此类服务器,X11客户端库将不会有任何帮助。 在嵌入式设备上,好的选择可能是直接访问framebuffer(例如,gtk-directfb,gtk-fb)

    你应该可以做到这一点; 然而,大多数X / Gtk库通常是动态编译的,而它们应该静态编译,否则可能会遇到一些问题。

    你有没有考虑简单地将所有需要的共享库捆绑到你的应用程序中? 您可以通过一个shell脚本封装器来启动您的应用程序,该封装器将库搜索路径设置为指向您的共享库所在的目录。

    这与firefox在Linux上使用插件路径的方法类似。

    你可以使用X Virtual Framebuffer。 在Debian上,这是xvfb软件包。 以下是来自包的说明:

    Xvfb提供了一个X服务器,可以在没有显示硬件和物理输入设备的机器上运行。 它使用虚拟内存来模拟一个哑帧缓冲区。 这个服务器的主要用途是服务器测试,但是还发现了其他一些新的用途,包括测试客户端的异常深度和屏幕配置,使用Xvfb作为背景渲染引擎进行批处理,负载测试作为一种辅助将X服务器移植到一个新的平台上,并提供一种不显眼的方式来运行那些并不需要X服务器的应用程序,但坚持要有一个。

    该软件包还包含一个名为xvfb-run的简便脚本,它简化了虚拟服务器环境中X客户端的自动执行。 这个便捷脚本需要使用xauth程序。

    有关X.Org的更多信息,请访问:

    http://www.X.org

    http://xorg.freedesktop.org

    http://lists.freedesktop.org/mailman/listinfo/xorg

    该软件包是从X.org xserver模块构建的。