繁体   English   中英

在Ubuntu下链接到X11

[英]Linking to X11 under Ubuntu

我从某个地方下载了一个X11的Hello,World C程序。 它可以编译,但不能正确链接。

32位Ubuntu版本在Windows 7下的VM VirtualBox中运行。我使用的编译和链接命令(我尝试过的多种变体之一)是:

gcc -L/usr/lib/i386-linux-gnu -lX11 hellowin.c

显然,这是正确的位置,因为“ locate libX11”为我提供了:

/usr/lib/i386-linux-gnu/libX11.a

在其他此类文件(主要是.so文件)中。 我得到的错误是这样的:

....undefined reference to 'XOpenDisplay'

我究竟做错了什么?

编辑:现在,如果我省略了-L并按照建议将-l移至文件后,它将可以正常工作。 例如:

gcc hellowin.o -lX11

或直接指定库,但这仅适用于.so,不适用于.a:

gcc hellowin.o /usr/lib/i386-linux-gnu/libX11.so

(带有Hello,World源代码的构建说明使用-L和-l,并且它们都放在目标文件名之前。)

gcc和链接的参数顺序非常重要(编译器选项,源文件,目标文件,从高级库到低级库的库):

gcc -Wall -g  hellowin.c  -L/usr/lib/i386-linux-gnu -lX11 -o hellowin

然后尝试

./hellowin

您可能需要将调试器与

gdb ./hellowin

我从rosettacode编译了一个“ Hello world”版本,但没有收到任何错误。 尝试使用另一个版本的Ubuntu(我的是VritualBox的旧版本:Ubuntu 12)。 我使用的是Windows10。(尽管我认为这不重要)。
也许您忘了包括其中一个库。
如果没有任何效果,请提供一些未运行的代码。

http://rosettacode.org/wiki/Window_creation/X11#Xlib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM