ldconfig 动态库加载管理

在Linux下使用apt等包管理器安装新软件时,通常包管理器自动为我们把一切都做好了。但是,我们自己编写的软件使用起来可能要考虑更多,软件通常需要依赖一些动态库,我们也可能自己编写一些动态库,这就不得不提Linux中管理动态库缓存的命令ldconfig

Linux如何查找系统拥有的动态库

Linux中有几个指定的位置存放系统所有的动态库。我们可以查看/etc/ld.so.conf/etc/ld.so.conf.d下的配置文件得知默认加载动态库的位置。但是如果我们试图把自己的动态库放到这些默认位置并调用时,这通常并不能成功,因为程序加载器实际读取的不是这些配置文件,而是一个缓存/etc/ld.so.cache,这个二进制文件保存了动态库的位置信息。我们添加自己的动态库后,必须重建这个缓存,这个就是ldconfig的作用。

ldconfig命令

ldconfig -v
  • -v:即--verbose,输出ldconfig正在扫描的目录和它正在创建的缓存详细信息

如图所示,ldconfig重建了动态库路径缓存,ldconfig实际还处理了动态库的版本号,关于动态库版本号相关的知识请参考LinuxC编程相关章节。

何时使用ldconfig

在以下情况发生时我们应该使用ldconfig命令重建动态库路径的缓存:

  1. 对系统动态库做任何改动的时候
  2. /etc/ld.so.conf/etc/ld.so.conf.d/*添加新的默认动态库搜索路径时

至于当我们在开发过程中,需要临时使用动态库,此时则不建议操作系统的动态库文件夹,毕竟这太麻烦了。比较好的方式是我们直接添加一个环境变量LD_LIBRARY_PATH,它可以临时添加某个目录作为动态库路径。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap