gpt4 book ai didi

c - 头文件在linux中是如何组织的

转载 作者:太空狗 更新时间:2023-10-29 11:38:45 27 4
gpt4 key购买 nike

在linux上,很多文件夹下都有socket.h,如下图。

  1. 如何决定 asm 文件夹、linux 和 bits 下存储的内容。我假设 sys 下的所有内容都只是 libc

  2. gcc 以什么顺序解析头文件。例如,它会从 sys 中选择 socket.h,然后是 linux,然后是 sys,然后是 bits 等等?

/usr/include/sys/socket.h, (libc使用)

/usr/include/linux/socket.h

/usr/include/asm/socket.h

/usr/include/asm-generic/socket.h

/usr/include/bits/socket.h(libc 包含)

最佳答案

1) 裸#include <socket.h>在默认的 Linux 配置下不起作用:

fatal error: socket.h: No such file or directory

这意味着您还必须在 gcc 搜索路径中指定目录的子目录:#include <sys/socket.h> (相对于 /usr/include ,所以绝对路径是 /usr/include/sys/socket.h )。要确定要使用的头文件,请查看 man socket .

一般/usr/include/sys包含最终用户 header ,而 bits/asm包含由 gcc 和其他 header 使用的中间 header 。 /usr/include/linux包含特定于 Linux 的 header (通常与内核共享,因此它是对可能对用户空间编程有用的内核结构的描述)。

Libc 头文件通常分散在整个/usr/include 中。 Gcc 特定的 header 通常位于 /usr/include/x86_64-linux-gnu 等位置等等。

2)这里:http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html您可以找到有关 GCC 搜索路径的更多信息。没有搜索任何猜测的目录,只是 /usr/include以及链接列表中的其他人。

关于c - 头文件在linux中是如何组织的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13749486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com