在Linux中套接字头文件在哪里?

9

我用#include <sys/socket.h>编译我的简单程序,但是找不到这个文件。 它在哪里呢?我刚开始在Linux上编程,不知道在哪里可以找到它。还是我们需要在线下载它呢?


1
不是答案,但你可能想看看Boost::Asio。它是跨平台的,并且带有适当的C++接口(在我看来,这比Unix特定的C API更好)。你的经验可能会有所不同。 - DevSolar
感谢DevSolar提供更多信息,确实有所帮助 :) - Dzung Nguyen
5个回答

21

如果您已经安装了手动页,第一步应该是查看 man socket

如果没有手动页,您可以调用

find /usr/include -name socket.h

输出结果为

/usr/include/asm/socket.h
/usr/include/sys/socket.h
/usr/include/bits/socket.h
/usr/include/linux/socket.h

在我的系统上,需要包含的是sys/socket.h

另请参阅Single UNIX规范


谢谢,还有另一个地方,查找工具和包含文件夹很有用 :) - Dzung Nguyen

3

例如,在一个全新的Linux系统上,比如Ubuntu X86-64,如果没有安装gcc,则找不到socket.h头文件。但是一旦安装了gcc,您可以在/usr/include下找到它,对我来说,输出结果为:

$ find /usr/include/ -name socket.h
/usr/include/asm-generic/socket.h
/usr/include/x86_64-linux-gnu/asm/socket.h
/usr/include/x86_64-linux-gnu/bits/socket.h
/usr/include/x86_64-linux-gnu/sys/socket.h
/usr/include/linux/socket.h

在 Debian 及其衍生版(Ubuntu 等)中,基本的头文件(包括 sys/socket.h)位于 libc6-dev 包中。它们位于 /usr/include 目录下,具体位置取决于架构。 - pevik

2
man socket

应该能为您提供答案。


1

0

应该是#include <sys/socket.h>。您可能还需要包括sys/types.h

但如果失败了,您能否提供一个简短的源代码片段,包括您正在#include的文件以及如何包含它们,以及您收到的错误消息?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接