详解Linux动态库被系统共享的三种办法

运维 系统运维
又过去了一年,也许有人会说Linux很多方面不如Windows,这是你不懂Linux,如果你想知道Linux态库被系统共享的三种办法,这里会将教会你Linux动态库被系统共享的三种办法。

又过去了一年,也许有人会说Linux很多方面不如Windows,这是你不懂Linux,如果你想知道Linux态库被系统共享的三种办法,这里会将教会你Linux动态库被系统共享的三种办法。

(再次说明: 本节参考了计算机世界网雨亦奇的文章"LINUX动态链接库高级应用"

 地址)

(1)拷贝动态链接库到系统共享目录下,或在系统共享目录下为该动态链接库

建立连接(硬连接或符号连接均可,常用符号连接).这里说的系统共享目录,

指的是LINUX动态链接库存放的目录,包括

/lib,/usr/lib以及/etc/ld.so.conf文件内所列的一系列目录.

实例:执行
# cp libtest.so /lib
# ldconfig

或:
# ln -s `pwd`/libtest.so /lib
# ldconfig

注意pwd前后有两个反引号`,其目的是取得pwd命令的输出,即当前目录.

此时再执行main,即可成功.

(2)将动态链接库所在目录名追加到动态链接库配置文件/etc/ld.so.conf中.

# pwd >> /etc/ld.so.conf

# ldconfig

此时再执行main,即可成功.

(3)利用动态链接库管理命令ldconfig,强制其搜索指定目录,并更新缓存文件,便于动态装入.

# ldconfig `pwd`

此时再执行main,即可成功.

要注意,第三种方法虽然有效,但效果是暂时的,供程序测试还可以,一旦再度运行ldconfig,则缓存文件内容可能改变,所需的动态链接库可能不被系统 共享了.而且无论哪种办法,其实质都是用ldconfig命令把动态库文件所在路径加入到系统库列表中,(前两种***,第三种临时)

ldconfig是一个动态链接库管理命令

为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig

ldconfig  命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为  /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.

ldconfig命令行用法如下:
ldconfig [-v|--verbose] [-n] [-N] [-X] [-f CONF] [-C CACHE] [-r ROOT] [-l] [-p|--print-cache] [-c FORMAT] [--format=FORMAT] [-V] [-?|--help|--usage] path...

ldconfig可用的选项说明如下:
(1) -v或--verbose : 用此选项时,ldconfig将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字.
(2) -n : 用此选项时,ldconfig仅扫描命令行指定的目录,不扫描默认目录(/lib,/usr/lib),也不扫描配置文件/etc/ld.so.conf所列的目录.
(3) -N : 此选项指示ldconfig不重建缓存文件(/etc/ld.so.cache).若未用-X选项,ldconfig照常更新文件的连接.
(4) -X : 此选项指示ldconfig不更新文件的连接.若未用-N选项,则缓存文件正常更新.
(5) -f CONF : 此选项指定动态链接库的配置文件为CONF,系统默认为/etc/ld.so.conf.
(6) -C CACHE : 此选项指定生成的缓存文件为CACHE,系统默认的是/etc/ld.so.cache,此文件存放已排好序的可共享的动态链接库的列表.
(7)  -r ROOT : 此选项改变应用程序的根目录为ROOT(是调用chroot函数实现的).选择此项时,系统默认的配置文件 /etc/ld.so.conf,实际对应的为 ROOT/etc/ld.so.conf.如用-r /usr/zzz时,打开配置文件 /etc/ld.so.conf时,实际打开的是/usr/zzz/etc/ld.so.conf文件.用此选项,可以大大增加动态链接库管理的灵活性.
(8) -l : 通常情况下,ldconfig搜索动态链接库时将自动建立动态链接库的连接.选择此项时,将进入专家模式,需要手工设置连接.一般用户不用此项.
(9) -p或--print-cache : 此选项指示ldconfig打印出当前缓存文件所保存的所有共享库的名字.
(10) -c FORMAT 或 --format=FORMAT : 此选项用于指定缓存文件所使用的格式,共有三种: ld(老格式),new(新格式)和compat(兼容格式,此为默认格式).
(11) -V : 此选项打印出ldconfig的版本信息,而后退出.
(12) -? 或 --help 或 --usage : 这三个选项作用相同,都是让ldconfig打印出其帮助信息,而后退出.

这样你就了解了Linux动态库被系统共享的三种办法。【编辑推荐】

  1. 配置笔记:Linux配置DNS服务器
  2. 讲解RedHat Linux 5显示中文的方法
  3. 教会你Redhat Enterprise Linux关闭SELinux
  4. 轻松完成Linux安装KDE软件包
  5. 阐述Redhat Linux配置远程桌面
责任编辑:小霞 来源: 博客园
相关推荐

2010-03-03 15:47:37

2019-04-16 11:21:50

Linux动态库软连接

2009-12-01 09:18:22

Linux版本

2023-08-02 10:10:00

C#C++

2013-06-17 17:08:47

Windows PhoWP开发共享数据方式

2019-07-25 07:14:03

LinuxSync操作系统

2022-03-24 23:04:37

linux静态库动态库

2010-06-13 15:22:21

Linux网络测试

2024-01-09 11:38:54

Linux发行版Linux开发

2009-12-10 15:46:22

动态路由协议

2010-03-15 10:40:56

Ubuntu Linu

2009-11-10 13:19:09

动态路由协议

2012-08-23 10:01:03

Linux服务器

2019-11-23 17:10:58

MySQL数据库default

2022-01-04 16:50:47

JavaScript图片网站

2010-04-20 17:34:25

Unix操作系统

2019-06-21 15:08:01

逃避技术证书安全

2021-11-23 10:30:35

Android技术代码

2012-08-22 14:05:25

Linux服务器

2009-08-18 16:45:50

Tomcat内存溢出
点赞
收藏

51CTO技术栈公众号