头文件搜索路径
第一种
#include "head.h"
- 搜索当前目录
- 搜索 -I 指定的目录
- 搜索 gcc 的环境变量 CPLUS_INCLUDE_PATH (C程序使用 C_INCLUDE_PATH ) 对应的目录
- 搜索 gcc 的内定目录
/usr/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/include
第二种
#include <head.h>
- 搜索 -I 指定的目录
- 搜索 gcc 的环境变量 CPLUS_INCLUDE_PATH (C程序使用 C_INCLUDE_PATH ) 对应的目录
- 搜索 gcc 的内定目录
注意它不会搜索当前目录。引用的顺序都是引用首先被搜索到的头文件。
gcc的内定目录
如果在使用时指明了 --prefix
字段,那么搜索内定目录的过程就会变为
/prefix/include
/prefix/local/include
/prefix/lib/gcc/x86_64-linux-gnu/include
库文件
静态链接库
编译的时候:
- 搜索 -I 指定的目录
- 搜索 gcc 的环境变量 LIBRARY_PATH 对应的目录
- 内定目录
/lib
/usr/lib
/usr/local/lib
动态链接库
动态库的搜索路径搜索的先后顺序:
- 编译目标代码时指定的动态库搜索路径(这是通过gcc 的参数
-Wl,<options>
指定,多个路径之间冒号分割) - 环境变量 LD_LIBRARY_PATH 指定的动态库搜索路径
- 配置文件 /etc/ld.so.conf 中指定的动态库搜索路径;
- 默认的动态库搜索路径/lib;
- 默认的动态库搜索路径/usr/lib。
需要注意的是动态链接库的搜索路径不包含当前文件夹