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

/usr/include/linux和/usr/include/x86_64-linux-gnu之间有什么区别/,c,linux,header,C,Linux,Header,我对原生C编程非常陌生,现在我正在尝试配置IDE以正确设置包含路径。因为我想通过我添加的sys/xxx.h文件导航 /usr/include/x86_64-linux-gnu/ 到我的包含路径。但是也有/usr/include/linux,它似乎也包含相同的头。那么它们之间的区别是什么呢?我应该使用哪一个呢?我可以立即告诉您,目录/usr/include/linux和/usr/include/asm永远不应该包含在系统头目录列表中。这些目录中的标题将用作#include或#include,而不

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

/usr/include/x86_64-linux-gnu/

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

我可以立即告诉您,目录
/usr/include/linux
/usr/include/asm
永远不应该包含在系统头目录列表中。这些目录中的标题将用作
#include
#include
,而不是
#include

这个问题的其余答案取决于您使用的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.
#包括“…”搜索从这里开始:
#包括搜索从这里开始:
/usr/lib/gcc/x86_64-linux-gnu/8/include
/usr/本地/包括
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/包括
搜索列表结束。
列出的目录是您应该将IDE配置为在其中查找系统头的目录,以便查找声明等等。但是,您不应该将IDE配置为将这些目录中的任何一个作为
-I
目录传递给编译器。它已经知道如何使用它们,不需要再告诉它,再告诉它会把事情搞砸(例如,上面目录的顺序很重要)


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

我可以立即告诉您,目录
/usr/include/Linux
/usr/include/asm
永远不应该包含在系统头目录列表中。这些目录中的标题将用作
#include
#include
,而不是
#include

这个问题的其余答案取决于您使用的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.
#包括“…”搜索从这里开始:
#包括搜索从这里开始:
/usr/lib/gcc/x86_64-linux-gnu/8/include
/usr/本地/包括
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/包括
搜索列表结束。
列出的目录是您应该将IDE配置为在其中查找系统头的目录,以便查找声明等等。但是,您不应该将IDE配置为将这些目录中的任何一个作为
-I
目录传递给编译器。它已经知道如何使用它们,不需要再告诉它,再告诉它会把事情搞砸(例如,上面目录的顺序很重要)

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