linux 动态库
来源:互联网 发布:手游龙之刃升阶数据 编辑:程序博客网 时间:2024/06/18 11:05
动态链接时、执行时搜索路径顺序:
1.编译目标代码时使用-L指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib;
5.默认的动态库搜索路径/usr/lib。
以上的3~5步中,不再需要手动地指定动态库搜索路径了,
有一个可以进行配置更新默认的搜索路径的命令:
ldconfig
ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.
例如:
我编译了个动态库文件,copy到/usr/lib下,这时使用ldconfig搜索一下我复制过去的库是否已经在能够配置成功;
root@ubuntu:/home/v0id/tools/android-ndk-r9c/samples/hello-jni# cp libs/x86/libhello-jni.so /usr/lib
root@ubuntu:/home/v0id/test# ldconfig -p | grep jni
无任何返回结果;
使用ldconfig命令进行配置后:
root@ubuntu:/home/v0id/test# ldconfig /usr/lib
root@ubuntu:/home/v0id/test# ldconfig -p | grep jni
root@ubuntu:/home/v0id/test# ldconfig -p | grep jni
libhello-jni.so (ELF) => /usr/lib/libhello-jni.so
例子2:
不在默认目录下,/etc/ld.so.conf文件中的内容为:
include /etc/ld.so.conf.d/*.conf
那么在/etc/ld.so.conf.d/建立一个yygytest.conf文件,
配置库的新路径,内容如下:
/home/v0id/test/yygylib
同时把放在/usr/lib目录下的libhello-jni.so动态库移动到/home/v0id/test/yygylib目录下,再使用ldconfig更新动态库路径的配置,命令如下:
root@ubuntu:/etc/ld.so.conf.d# mv /usr/lib/libhello-jni.so /home/v0id/test/yygylib/
root@ubuntu:/etc/ld.so.conf.d# ldconfig -p | grep jni
libhello-jni.so (ELF) => /usr/lib/libhello-jni.so
root@ubuntu:/etc/ld.so.conf.d# ldconfig
root@ubuntu:/etc/ld.so.conf.d# ldconfig -p | grep jni
libhello-jni.so (ELF) => /home/v0id/test/yygylib/libhello-jni.so
当一个动态库文件从目录中删除时,再次使用ldconfig即可更新动态库的路径的配置
ldconfig(更新动态库的缓存表/etc/ld.so.cache)
1.编译目标代码时使用-L指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib;
5.默认的动态库搜索路径/usr/lib。
以上的3~5步中,不再需要手动地指定动态库搜索路径了,
有一个可以进行配置更新默认的搜索路径的命令:
ldconfig
ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.
例如:
我编译了个动态库文件,copy到/usr/lib下,这时使用ldconfig搜索一下我复制过去的库是否已经在能够配置成功;
root@ubuntu:/home/v0id/tools/android-ndk-r9c/samples/hello-jni# cp libs/x86/libhello-jni.so /usr/lib
root@ubuntu:/home/v0id/test# ldconfig -p | grep jni
无任何返回结果;
使用ldconfig命令进行配置后:
root@ubuntu:/home/v0id/test# ldconfig /usr/lib
root@ubuntu:/home/v0id/test# ldconfig -p | grep jni
root@ubuntu:/home/v0id/test# ldconfig -p | grep jni
libhello-jni.so (ELF) => /usr/lib/libhello-jni.so
例子2:
不在默认目录下,/etc/ld.so.conf文件中的内容为:
include /etc/ld.so.conf.d/*.conf
那么在/etc/ld.so.conf.d/建立一个yygytest.conf文件,
配置库的新路径,内容如下:
/home/v0id/test/yygylib
同时把放在/usr/lib目录下的libhello-jni.so动态库移动到/home/v0id/test/yygylib目录下,再使用ldconfig更新动态库路径的配置,命令如下:
root@ubuntu:/etc/ld.so.conf.d# mv /usr/lib/libhello-jni.so /home/v0id/test/yygylib/
root@ubuntu:/etc/ld.so.conf.d# ldconfig -p | grep jni
libhello-jni.so (ELF) => /usr/lib/libhello-jni.so
root@ubuntu:/etc/ld.so.conf.d# ldconfig
root@ubuntu:/etc/ld.so.conf.d# ldconfig -p | grep jni
libhello-jni.so (ELF) => /home/v0id/test/yygylib/libhello-jni.so
当一个动态库文件从目录中删除时,再次使用ldconfig即可更新动态库的路径的配置
ldconfig(更新动态库的缓存表/etc/ld.so.cache)
0 0
- linux 动态加载动态库
- linux 动态加载动态库
- linux 动态加载动态库
- Linux 动态库剖析
- Linux 动态库剖析
- Linux 动态库剖析
- Linux 动态库剖析
- linux lib 动态库
- linux 调试动态库
- Linux 动态库剖析
- Linux 动态库剖析
- linux 动态链接库
- Linux 动态库剖析
- Linux动态库
- Linux如何查找动态库
- Linux 动态库剖析
- linux动态库介绍
- Linux 动态库剖析
- ArcEngine 拓扑检查 总结(持续补充中……)
- 14,结构体
- 浅谈数据库索引
- 笔试题中有关树的问题汇总
- uboot初步学习
- linux 动态库
- [347] Top K Frequent Elements
- Qt学习之三:创建主窗口
- Android的Activity跳转探索之Android6.0动态权限管理
- Activity使用另一个Activity中的方法与变量
- selenium之 坑(StaleElementReferenceException: Message: Element not found in the cache...)
- 笔画-华为OJ
- Java - 华为机试训练 - 购物单(0-1背包+限制条件)
- 流整理