Ubuntu 11.10中的链接器问题

时间:2012-01-24 09:23:03

标签: gcc ubuntu linker

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

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

1 个答案:

答案 0 :(得分:20)

  

g++ -lX11 -o test test.o

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

g++ test.o -lX11

解释订单为何重要here

此外,您永远不应该在UNIX上调用可执行文件test