目录
- 前言
- 1 路径相关的环境变量
- 1.1 PATH
- 1.2 *_INCLUDE_PATH
- 1.3 LIBRARY_PATH
- 1.4 LD_LIBRARY_PATH
- 参考文献
前言
本文用于总结linux中常用的环境变量,用于备忘。文中内容来源于网络,所有参考文章均会在文末列出,内容会不断更新。
1 路径相关的环境变量
1.1 PATH
记录可执行文件
的路径,比如我们通过shell执行命令时,shell就会在PATH记录的一系列路径下寻找命令对应的可执行文件。
1.2 *_INCLUDE_PATH
这类环境变量通常会被GCC使用,用来记录一系列头文件目录
,GCC搜索头文件时,回去这些目录查找:
- C_INCLUDE_PATH:记录C语言的头文件目录;
- CPLUS_INCLUDE_PATH:记录CPP的头文件目录;
- OBJC_INCLUDE_PATH:记录OC的头文件目录。
补充说明——GCC搜索头文件的优先顺序:
- 当前目录(如果使用了
""
包含头文件); - 编译选项中
-I
指定的目录; - 环境变量
*_INCLUDE_PATH
记录的一系列头文件目录; - GCC预设的头文件目录,如不使用
-nostdinc
选项,则这些预设的目录总是会被搜索,因此放在最后。上文所谓预设的头文件目录在GCC手册中被称为standard system directories for header files
,通常是/usr/include
、/usr/local/include
、/usr/lib/gcc/x86_64-linux-gnu/4.8/include
等。
1.3 LIBRARY_PATH
记录一系列的库文件目录
(动态/静态),在程序的编译链接期间
,GCC搜索-l
选项指定的库文件时,会在该环境变量记录的目录中搜索。
补充说明——GCC搜索库文件的优先顺序:
-
-L
选项指定的目录; - 环境变量
LIBRARY_PATH
记录的一系列库文件目录; - GCC预设的库文件目录,通常是
/lib
、/usr/lib
、/usr/local/lib
等。
1.4 LD_LIBRARY_PATH
记录一系列的动态库目录
,在程序的加载运行期间
,动态链接/加载器(ld-linux.so.2)搜索并加载程序依赖的动态库时,会在该环境变量记录的目录中搜索。
补充说明——动态链接/加载器搜索动态库的优先顺序:
-
编译链接时指定的
动态库搜索路径。具体的,通过GCC的编译选项-Wl,-rpath=dir1:dir2
可以把动态库搜索路径dir1
、dir2
添加到可执行文件中。同时,该选项也有在编译链接时使链接器搜索其指定目录的作用。要注意该选项与-L
选项的区别,-L选项用于编译链接时添加库文件的搜索路径;而该选项仅限于动态库
,既可以在编译链接时添加搜索路径,同时也能将搜索路径添加到可执行文件中以便加载运行时使用; - 环境变量
LD_LIBRARY_PATH
指定的动态库搜索路径; - 配置文件
/etc/ld.so.conf
中指定的动态库搜索路径。需要说明的是,通过修改该配置文件来添加搜索目录时,须在修改后运行ldconfig
命令以刷新缓存文件/etc/ld.so.cache
,进而使修改后的配置生效; - 默认的动态库搜索路径
/lib
; - 默认的动态库搜索路径
/usr/lib
。