c -/usr/include/linux 和/usr/include/x86_64-linux-gnu/有什么区别

标签 c linux header

我对 native C 编程还很陌生,现在我正在尝试配置我的 IDE 以正确设置包含路径。因为我想通过我添加的 sys/xxx.h 文件进行导航

/usr/include/x86_64-linux-gnu/

到我的包含路径。但是还有 /usr/include/linux 似乎也包含相同的 header 。那么它们之间有什么区别呢?我应该实际使用哪一个?

最佳答案

我可以立即告诉您目录 /usr/include/linux/usr/include/asm永远不应包含在系统头目录列表中。这些目录中的 header 旨在用作 #include <linux/whatever.h>#include <asm/whatever.h> , 不像 #include <whatever.h> .

这个问题的其余答案完全取决于您使用的 Linux“发行版”,所以我不能只说出来。幸运的是,有一种方法可以让编译器告诉你。在终端窗口中运行此命令(完全如图所示):

LC_ALL=C gcc -v -xc -E /dev/null 2>&1 | 
    sed -ne '/search starts here/,/End of search list/p'

你会得到类似这样的输出,但细节可能略有不同:

#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/8/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.

列出的目录是您应该配置 IDE 以在其中查找系统 header 的目录,目的是查找声明和诸如此类的东西。但是,您不应将 IDE 配置为将这些目录中的任何一个作为 -I 传递给编译器。目录。它已经知道要使用它们,不需要再次告诉它,再次告诉它可能会把事情搞砸(例如,上述目录的顺序很重要)。

作为应用程序程序员,您无需担心哪些 header “属于”哪些目录。这完全是编译器和 C 库开发人员以及 Linux 发行版维护人员的任务。

关于c -/usr/include/linux 和/usr/include/x86_64-linux-gnu/有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52245404/

相关文章:

c - C 编程中的 getche

C - 外部汇编函数使用相同的输入返回不同的结果

linux - 在 Amazon AMI 上自动启动 nodejs 应用程序

c++ - 命名空间、类和编译器顺序

c - 循环链表中是否需要头节点

c - 如何在标准 PC 上管理大树?

c++ - 在 .h 文件中声明静态常量 vector 时出错,在 .cpp 文件中定义时出错

html - 固定表格

c - 调用位于堆中的函数时出现段错误

linux - 在整个 Linux 文件系统中查找并替换文件/文件夹名称和内容