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

问题描述 投票:1回答:1

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

/usr/include/x86_64-linux-gnu/

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

c linux header
1个回答
5
投票

我可以立即告诉你,目录/usr/include/linux/usr/include/asm永远不应该包含在系统头目录列表中。这些目录中的标题用作#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以查找系统头的目录,以便查找声明和诸如此类的东西。但是,您不应将IDE配置为将任何这些目录作为-I目录传递给编译器。它已经知道要使用它们,它不需要再次被告知,并且再次告诉它可以搞砸了(例如,上述目录的顺序很重要)。

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

© www.soinside.com 2019 - 2024. All rights reserved.