1、操作

当使用函数动态链接库.so时,如果从文件不在系统目录/lib/usr/lib(可以把.so拷贝到这些目录下;但如果没有root权限,则无法拷贝)。那么就需要指定环境变量LD_LIBRARY_PATH

LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。

格式:

LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH

newdirs是新的路径串,注意不要有空格,否则会报错。

如:

export LD_LIBRARY_PATH=/home/username/Test/lib/:$LD_LIBRARY_PATH
2、运行时动态库的搜索路径的顺序

运行时动态库的搜索路径的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib/usr/lib
我们的/lib/usr/lib只有root权限才可以修改,而且配置文件/etc/ld.so.conf也是root的事情,我们只好对LD_LIBRARY_PATH进行操作。

3、永久性添加

每次我使用该软件都需要临时修改库文件,因为上面的方法是临时设置环境变量 LD_LIBRARY_PATH ,重启或打开新的Shell 之后,一切设置将不复存在。

为了让这种方法更完美一些,可以将该 LD_LIBRARY_PATHexport 语句写到系统文件中,例如 /etc/profile/etc/export~/.bashrc 或者 ~/.bash_profile 等等,取决于你正在使用的操作系统。

linux系统则是写到~/.bashrc

vi .bashrc
export LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH
或者 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:NEWDIRS

重新开启一个shell后,输入echo @LD_LIBRARY_PATH,查看是否以写入环境变量。

LD_LIBRARY_PATH 这个环境变量是大家最为熟悉的,它告诉loader:在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。

linux下,还 提供了另外一种方式来完成同样的功能,你可以把这些目录加到/etc/ld.so.conf中,然后调用ldconfig

4、export 命令

功能说明: 设置或显示环境变量。(比如我们要用一个命令,但这个命令的执行文件不在当前目录,这样我们每次用的时候必须指定执行文件的目录,麻烦,在代码中先执行export,这个相当于告诉程序,执行某某东西时,需要的文件或什么东东在这些目录里)

语  法: export [-fnp][变量名称]=[变量设置值]

补充说明: 在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。

参  数:

-f  代表[变量名称]中为函数名称。

-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p  列出所有的shell赋予程序的环境变量。

一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到 任何后继脚本。