gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:05 24 4
gpt4 key购买 nike

我对 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/

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