升级到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
。