我对本机C编程非常陌生,现在我正尝试配置IDE以正确设置包含路径。由于我想按sys/xxx.h添加的文件进行导航
/usr/include/x86_64-linux-gnu/
Run Code Online (Sandbox Code Playgroud)
到我的包含路径。但是/usr/include/linux,似乎也包含相同的标头。那么它们之间有什么区别呢?我应该实际使用哪一个呢?
我可以立即告诉你的目录/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'
Run Code Online (Sandbox Code Playgroud)
您将获得看起来像这样的输出,但是细节可能略有不同:
#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.
Run Code Online (Sandbox Code Playgroud)
列出的目录是您应该配置IDE以便在其中查找系统标头的目录,以查找声明和其他内容。但是,你应该不会配置IDE通过这些目录的编译器的-I目录。它已经知道要使用它们,不需要再次告诉它,而再次告诉它可能会使事情搞砸(例如,上述目录的顺序很重要)。
作为应用程序程序员,您不必担心哪个标头“属于”哪个目录。这完全是编译器和C库开发人员以及Linux发行维护人员的任务。
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |