在Linux系统中,可执行文件和库文件的查找路径是由环境变量控制的,其中最重要的是PATH环境变量用于可执行文件,而动态库的查找路径则由LD_LIBRARY_PATH环境变量决定。下面分别介绍这两个方面:
PATH环境变量:当你在命令行输入一个命令并敲击回车时,Linux会按照PATH环境变量中列出的目录顺序依次查找该命令的可执行文件。PATH变量是一个由冒号(:`)分隔的目录列表。
设置PATH:可以通过以下方式设置或修改PATH:
临时设置:在当前终端会话中使用export命令。
export PATH=$PATH:/my/new/path永久设置:修改配置文件,使每次登录时自动设置PATH。
/etc/profile或/etc/environment(取决于发行版)。~/.bashrc或~/.profile(针对bash shell)。修改后,可能需要执行source命令使更改立即生效,或重新登录。
验证:可以用echo $PATH查看当前的PATH设置,用which command_name查看特定命令的完整路径。
LD_LIBRARY_PATH环境变量:当一个程序在运行时需要加载动态链接库(.so文件),Linux会按照LD_LIBRARY_PATH变量中列出的目录顺序查找这些库文件。
设置LD_LIBRARY_PATH:
临时设置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my/library/path永久设置:同样,可以编辑用户主目录下的.bashrc或系统级的配置文件,但通常不建议永久设置LD_LIBRARY_PATH,因为它可能导致安全风险和管理复杂性。对于安装的库,正确的做法是将其路径添加到配置文件,如/etc/ld.so.conf.d/*.conf,然后运行ldconfig命令更新缓存。
验证:可以使用ldd command_name命令查看某个可执行文件依赖的动态库及其加载路径。
/lib、/usr/lib、/usr/local/lib等系统目录,这些目录无须显式设置LD_LIBRARY_PATH。ldconfig命令可以更新动态链接库的缓存(/etc/ld.so.cache),确保新添加的库路径能够被系统识别。