在Ubuntu 11.10链接器的问题

升级到Ubuntu 11.10后,我发现我的许多旧的和现在的开发不能再编译了。 我已经将问题简化为一个简单的例子:

#include <X11/Xlib.h> int main() { Display* display = XOpenDisplay(":0.0"); XCloseDisplay(display); return 0; } 

编译使用:

 g++ -lX11 test.cpp 

要么

 g++ -c -o test.o test.cpp g++ -lX11 -o test test.o 

导致失败发生:

 /tmp/ccBAOpzy.o: In function `main': test.cpp:(.text+0x11): undefined reference to `XOpenDisplay' test.cpp:(.text+0x21): undefined reference to `XCloseDisplay' 

有任何想法吗? 我发现11.10中一些链接器的东西已经改变了:

https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition

但是仍然没有解释这些问题。

g++ -lX11 -o test test.o

以上命令不正确 。 试试这个:

 g++ test.o -lX11 

为什么顺序在这里解释 。

另外,您不应该在UNIX上调用您的可执行文件test