一、 Linux 动态库选择顺序指:
1. 编译程序时用到动态库,该从那些地方查找,按照怎么样的顺序查找?
2. 运行程序时需要动态库,该从那些地方查找,按照怎么样的顺序查找?
二、gcc 编译程序时查找SO顺序如下:
1. gcc 编译时参数-L指定的路径
2. 环境变量 LIBRARY_PATH
3. 系统默认库位置 /lib /usr/lib
三、Linux 程序运行时查找SO顺序如下:
1. gcc 编译时指定的运行时库路径 -Wl,-rpath
2. 环境变量 LD_LIBRARY_PATH
3. ldconfig 缓存 /etc/ld.so.cache
4 系统默认库位置 /lib /usr/lib
四、LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:
LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。设置方法如下(其中,LIBDIR1和LIBDIR