gcc手册说,搜索C(而不是C ++)编译的系统头的顺序是:
/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include
在我的系统上它显示
的偏好/usr/include/x86_64-linux-gnu/
前
/usr/include
为什么?
在我的系统上,我只有第一个和第四个目录,我的头文件只在第四个。那么
/usr/include/x86_64-linux-gnu
进入搜索???
答案 0 :(得分:1)
以这种方式思考:您希望首先拥有最适合您系统的包含文件。与编译相同,如果您知道自己在x86_64上,请使用该架构上可用的指令/结构(SSEn),这可能是最快,最有效的...如果您不能让它们回归到可用的更通用的实体:因此首先搜索和使用大多数特定的东西。
答案 1 :(得分:1)
手册说这是普通Unix系统的系统头搜索顺序。对于所有Unix和Linux主机来说,即使适当地替换占位符libdir
和target
,也不总是如此。并且,在GNU文档中持续存在多年的重大错别字,时代错误或松懈并不为人所知。
在您的情况下,target
= x86_64-linux-gnu
和libdir
最有可能=
/usr/lib
。对于/usr/target/include
阅读/usr/include/target
,
为你的Linux发行版(和我的)。通过这种转换,你实际上
确实有第三个目录,它对/usr/include/x86_64-linux-gnu/
来说是正确的
在搜索顺序中位于/usr/include
之前。
您的标题问题是为什么优先级,而user1666959会回答 如果不是你结束的那个。