- 编译和链接时,动态库的搜索路径顺序如下(注意不会递归性地在其子目录下搜索):
(1) gcc编译、链接命令中的-L选项;
(2) gcc的环境变量的LIBRARY_PATH(多个路径用冒号分割);
(3) gcc默认动态库目录:/lib:/usr/lib:usr/lib64:/usr/local/lib。
- 运行时,动态库的搜索路径顺序如下:
(1) 编译目标代码时指定的动态库搜索路径:用选项-Wl,rpath和include指定的动态库的搜索路径,比如gcc -Wl,-rpath,include -L. -ldltest hello.c,在执行文件时会搜索路径`./include`;
(2) 环境变量LD_LIBRARY_PATH(多个路径用冒号分割);
(3) 在 /etc/ld.so.conf.d/ 目录下的配置文件指定的动态库绝对路径(通过ldconfig生效,一般是非root用户时使用);
(4) gcc默认动态库目录:/lib:/usr/lib:usr/lib64:/usr/local/lib等。