作者:Ronnie 手机:13761598350 E-mail:ghnghnghnghn@163.com
一般来说,Linux动态库的默认搜索路径是/lib和/usr/lib。创建完动态库后,一般都会将创建出来的动态库复制到这两个目录中。在执行应用程序时,系统会去这两个路径下调用动态库。但其实,动态库的搜索路径除了这两种方法去指定以外,还有另外两种方法:编辑配置文件和指定环境变量。但是这四种搜索路径的优先级又各不相同。
我们先在同级目录下建立三个文件tlib.h:
#ifndef __TLIB_
#define __TLIB_
void fun(void);
#endif
tlib.c:
#include
#include “tlib.h”
void fun()
{
printf(“This is a test\n”);
}
以及test.c:
#include
#include “tlib.h”
int main()
{
fun();
return 0;
}
总的来说,无论使用哪种方法去指定动态库的搜索路径,都少不了这几步:
①gcc -fPIC -Wall -c tlib.c 生成.o文件
②gcc -shared -fPCI -o libtlib.so tlib.o 生成动态库
③gcc -o test test.c -L. -ltlib 生成可执行文件
这里要注意一点,动态库文件名必须以lib开头。
下面就把这四种方法一一作一下说明:
为了测试起来更直观,我们可以在做每一种方法之前把tlib.c里面fun函数打印的内容变换一下,然后再做上面的第①至第③步。
方法一:
在配置文件/etc/ld.so.conf里添加动态库所在的路径,编辑完后在命令行输入ldconfig。
方法二:
指定环境变量 export LD_LIBRARY_PATH=[动态库所在的路径]。
方法三:
把动态库拷贝到/usr/lib目录下。
方法四:
把动态库拷贝到/lib目录下。
经过测试,可知动态库搜索路径优先级从高到低依次是:方法二,方法一,方法四,方法三。

