几个月来我一直在做一些轻量级的 OpenGL 编程,现在我想使用 xscreensaver 库编写一个屏幕保护程序。
在问这个问题之前,我看到了如何开发 linux 屏幕保护程序,但我认为这个特定的问题不够具体。
我已经做过的——
我下载了 xscreensaver 源代码并阅读了 README.hacking。我在源代码的 hacks 目录中玩弄 graynetic.c 的代码(jwz 建议用于理解自述文件中的 xscreensaver 的屏幕保护程序之一)。
我读了这个网页 - http://www.dis.uniroma1.it/~liberato/screensaver/simplesquares.html(来自链接问题的答案之一)。我下载了 simplesquares.c 代码并尝试运行它。
我的问题是-
- 我不明白我应该如何编译和执行我对任何屏幕保护程序所做的任何更改。
- 用 gcc 编译前面提到的 simplesquares.c 并运行可执行文件根本没有输出。难道我做错了什么?
注意:您必须在 gcc 命令中添加 -lX11 以便在编译 simplesquares.c 时链接 X11 库,否则它将返回未定义的引用错误。
编辑:
在编译屏幕保护程序 graynetic.c 时,它会返回一些错误,其中一些我已在此处复制:
greynetic.c:(.text+0x4f): undefined reference to `XGetWindowAttributes'
greynetic.c:(.text+0xa6): undefined reference to `get_boolean_resource'
greynetic.c:(.text+0xd9): undefined reference to `get_pixel_resource'
greynetic.c:(.text+0x112): undefined reference to `get_pixel_resource'
greynetic.c:(.text+0x13e): undefined reference to `get_integer_resource'
greynetic.c:(.text+0x185): undefined reference to `XCreateGC'
greynetic.c:(.text+0x1dd): undefined reference to `XCreatePixmapFromBitmapData'
这可能是一个链接错误。