gcc按照如下顺序寻找头文件
- 首先到 -I 选项指定的目录寻找
- C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH这些环境变量指定的路径寻找
- standard system directories,这写路径包括:
/usr/include
/usr/local/include
/usr/lib/gcc/…
之类的。
在编译的时候如果指定-v选项,gcc会打印出搜索头文件的目录列表。
-nostdinc选项可以让gcc不搜索系统头文件目录。一般和-I结合使用。
动态库的搜索路径搜索的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf.d/*中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib;
5.默认的动态库搜索路径/usr/lib。
特别说明:上面说的这些规则不全面也不权威,我也没有核对或证实过,仅供参考。要想了解全面和权威的,去翻阅gcc手册吧。