gcc - 错误编译示例xscreensaver

时间:2014-03-20 02:23:53

标签: c gcc

我正在尝试编译示例屏幕保护程序simplesquares.c(来自here)。我有vroot.h,这是我使用的命令:

gcc -lX11 -o simplesquares simplesquares.c

这些是返回的错误:

/tmp/cc0FvxcU.o: In function `VirtualRootWindowOfScreen':
simplesquares.c:(.text+0x55): undefined reference to `XInternAtom'
simplesquares.c:(.text+0x82): undefined reference to `XQueryTree'
simplesquares.c:(.text+0x108): undefined reference to `XGetWindowProperty'
simplesquares.c:(.text+0x14c): undefined reference to `XFree'
/tmp/cc0FvxcU.o: In function `main':
simplesquares.c:(.text+0x17b): undefined reference to `XOpenDisplay'
simplesquares.c:(.text+0x1c8): undefined reference to `XCreateGC'
simplesquares.c:(.text+0x201): undefined reference to `XSetForeground'
simplesquares.c:(.text+0x295): undefined reference to `XFillRectangle'
simplesquares.c:(.text+0x2e3): undefined reference to `XClearWindow'
simplesquares.c:(.text+0x2ef): undefined reference to `XFlush'
collect2: error: ld returned 1 exit status

这里发生了什么,我该如何解决?

1 个答案:

答案 0 :(得分:3)

静态链接库应位于命令行的末尾。

gcc -o simplesquares simplesquares.c -lX11

来自http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

  

在您编写此选项的命令中,它会有所不同;该   链接器按顺序搜索和处理库和目标文件   它们是指定的。因此,'foo.o -lz bar.o'之后搜索库'z'   文件foo.o但在bar.o之前如果bar.o引用'z'中的函数,   这些功能可能无法加载。