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_PATH
的 export
语句写到系统文件中,例如 /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命令可以用于传递一个或多个变量的值到 任何后继脚本。