Linux/UNIX学习之指定动态链接库的搜索目录

共享库是一种将库函数打包成一个单元使之能够在运行时被多个进程共享的技术。

为了使用一个共享库就需要做两件事:

  • 由于可执行文件不再包含她所需的目标文件的副本,因此它需要通过某种机制找出在运行时所需要的共享库。这是通过在链接阶段将共享库的名称嵌入可执行文件中来完成的。一个程序所依赖的所有共享库列表被称为程序的动态依赖列表。
  • 在运行时必须存在某种机制来解析嵌入的库名——即找出与在可执行文件中指定的名称对应的共享库文件——接着如果库不在内存中的话就将库加载进入内存。

有三种通知动态链接器共享库的位置的方式:

方式一:使用LD_LIBRARY_PATH环境变量:

事例:
LD_LIBRARY_PATH = . ./prog

方式二:将共享库安装到其中一个标准库目录中(/lib、/usr/lib或者在/etc/ld.so.conf中列出的其中一个目录)

方式三:在静态编辑阶段可以在可执行文件中插入一个在运行时搜索共享库的目录列表。这种方式对于库位于一个固定的但不属于动态链接器搜索的标准位置的位置中时非常有用。要实现这种方式需要在创建可执行文件时使用-rpath链接器选项。例如:

$ gcc -g -Wall -Wl,-rpath,/home/mkt/pdir -o prog prog.c libdemo.so

上面的命令将字符串/home/,kt/pdir复制到了可执行文件prog的运行时库路径(rpath)列表中,因此当运行这个程序时,动态链接器在解析共享库引用时还会搜索这个目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值