如何在C中链接Wayland头文件?

如何在C中链接Wayland头文件?,c,wayland,C,Wayland,我开始为Wayland编写代码。我已经学习了很多教程,但我仍然坚持编译。我写了一段非常简单的代码: #包括 #包括 int main(int argc,char*argv[]){ struct wl_display*display=wl_display_connect(空); 如果(!显示){ fprintf(stderr,“无法连接到Wayland显示\n”); 返回1; } fprintf(标准输出,“已建立连接!\n”); getchar(); wl_显示_断开(显示); 返回0; }

我开始为Wayland编写代码。我已经学习了很多教程,但我仍然坚持编译。我写了一段非常简单的代码:

#包括
#包括
int main(int argc,char*argv[]){
struct wl_display*display=wl_display_connect(空);
如果(!显示){
fprintf(stderr,“无法连接到Wayland显示\n”);
返回1;
}
fprintf(标准输出,“已建立连接!\n”);
getchar();
wl_显示_断开(显示);
返回0;
}
然后,我尝试使用
gcc-o client-lwayland client.c

编译它 但是,编译失败,并显示以下错误消息:

/usr/bin/ld: /tmp/ccfXeOS8.o: in function `main':
client.c:(.text+0x19): undefined reference to `wl_display_connect'
/usr/bin/ld: client.c:(.text+0x7c): undefined reference to `wl_display_disconnect'
collect2: error: ld returned 1 exit status
这看起来很奇怪,因为系统中有一个文件
/usr/include/wayland client core.h
,其中包含以下声明:

struct-wl\u-display*wl\u-display\u-connect(const-char*name);
无效wl_显示\u断开连接(结构wl_显示*显示);

我做错了什么?

您需要将命令行更改为:

gcc client.c -o client -lwayland-client
或:

或:


基本上,.c文件(或.o文件)需要出现在库链接选项之前。

为什么不
\include
@i486这是因为
wayland client.h
文件说
\警告不鼓励使用此头文件。更喜欢包含*wayland client core.h,它不包含*client协议头,因此只定义库*API。
非常感谢。我第一次从终端链接外部库,我不知道参数的顺序也很重要。
gcc client.c -lwayland-client -o client
gcc -o client client.c -lwayland-client