GCC/MSVC的搜索路径大揭秘_gcc 找不到文件

GCC/MSVC的搜索路径大揭秘_gcc 找不到文件

编码文章call10242025-02-19 10:29:0610A+A-


不同路径存在相同的头文件,头文件搜索也有自己的规则。库文件同样有类似搜索路径问题。


GCC头文件

GCC编译C代码,根据是""或<>方式不同,头文件路径搜索顺序有差异。

  • ""
    • 被编译的源代码文件所在当前目录
    • -iquote指定的路径(只用于引号括起来头文件,如多个路径,从左到右依次搜索)
    • -I指定的路径(如多个路径,从左到右依次搜索)
    • -isystem指定的路径(如多个路径,从左到右依次搜索)
    • 标准系统头文件路径
    • -idirafter指定的路径(如多个路径,从左到右依次搜索)
  • <>
    • -I指定的路径(如多个路径,从左到右依次搜索)
    • -isystem指定的路径(如多个路径,从左到右依次搜索)
    • 标准系统头文件路径
    • -idirafter指定的路径(如多个路径,从左到右依次搜索)

有兴趣的可以写多个不同路径的相同名称头文件,用""或<>测试上面的顺序,可以一一验证。比较有趣的是,即使是系统头文件, 也可以改成"stdio.h", 这样就遵循上面""的搜索顺序,可以达到覆盖系统头文件的效果。


MSVC头文件

  • ""
    • 源代码所在目录
    • /I 指定的路径
    • 标准系统头文件路径
  • <>
    • /I 指定的路径
    • 标准系统头文件路径


GCC库文件

库文件不像头文件那样有这么多分类:

  • -L参数
  • LIBRARY_PATH或LD_LIBRARY_PATH
  • /etc/ld.so.conf路径
  • 系统默认的库路径(如/lib, /usr/lib等)。








若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4