1. 概念

ldconfig 命令用于在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下,搜索出可共享的动态链接库(格式如 lib*.so*),进而创建出动态链接器(ld.so 或 ld-linux.so)所需的缓存文件。缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。为了让动态链接库为系统所共享,需运行动态链接库的管理命令 ldconfig 更新动态链接库的缓存文件。

ldconfig 位于 /sbin 目录下,通常在系统启动时运行,当用户安装了一个新的动态链接库时,需要手动运行这个命令。

2. 语法

/sbin/ldconfig [ -nNvXV ] [ -f conf ] [ -C cache ] [ -r root ] directory ...
/sbin/ldconfig -l [ -v ] library ...
/sbin/ldconfig -p

3. 参数说明

-v, --verbose用此选项时,ldconfig 将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的链接的名字-nldconfig仅扫描命令行指定的目录,不扫描默认目录(/lib、/usr/lib),也不扫描配置文件 /etc/ld.so.conf 所列的目录。-Nldconfig 不重建缓存文件(/etc/ld.so.cache),若未用 -X 选项,ldconfig 照常更新文件的链接-Xldconfig 不更新文件的链接,若未用 -N 选项,则缓存文件照常重建-f <conf >指定动态链接库的配置文件为 <conf > ,系统默认为 /etc/ld.so.conf-C <cache>指定生成的缓存文件为 <cache>,系统默认的是 /etc/ld.so.cache,此文件存放已排好序的可共享的动态链接库的列表-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 文件。用此选项,可以大大增加动态链接库管理的灵活性-l通常情况下,ldconfig 搜索动态链接库时将自动建立动态链接库的链接,选择此项时,将进入专家模式,需要手工设置链接,一般用户不用此项-p, --print-cacheldconfig 打印出当前缓存文件保存的所有共享库的名字-c FORMAT 或 --format=FORMAT:此选项用于指定缓存文件所使用的格式,共有三种:old(老格式),new(新格式)和compat(兼容格式,此为默认格式)。-V打印出 ldconfig 的版本信息-?, --help, --usage这三个选项作用相同,都是让ldconfig打印出其帮助信息

4. 示例

(1)显示 ldconfig 帮助信息。

ldconfig -?

(2)显示 ldconfig 版本信息。

ldconfig -V

(3)刷新动态链接库缓存文件 /etc/ld.so.cache。

sudo ldconfig

5. 注意事项

(1)往 /lib 和 /usr/lib 里面加动态链接库,是不用修改 /etc/ld.so.conf的,但是完了之后要调一下 ldconfig,不然这个 library 会找不到。

(2)想往上面两个目录以外加东西的时候,一定要修改 /etc/ld.so.conf,然后再调用 ldconfig,不然也会找不到。

比如安装了一个 mysql 到 /usr/local/mysql,mysql 有一大堆 library在 /usr/local/mysql/lib 下面,这时就需要在 /etc/ld.so.conf 里面加一行 /usr/local/mysql/lib,保存过后执行 ldconfig 更新一下动态链接库缓存 /etc/ld.so.cache,新的 library 才能在程序运行时被找到。

(3)如果想在 /lib 和 /usr/lib 这两个目录以外放 lib,并且又不想在 /etc/ld.so.conf 中加动态链接库的目录(或者是没有权限加)。那么可以 export 一个全局变量 LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找 library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用。

(4)ldconfig 更新动态链接库的缓存文件只与程序运行时有关,跟编译时没有关系。编译时需要加 -L 就得加,不要混淆了。

(5)总之,就是不管做了什么关于 library 的变动后,最好都 ldconfig 一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。

linux基础51——ldconfig相关推荐

  1. 一、Linux基础入门和架构了解

    第一章入门 一.虚拟机准备工作 1.仅主机模式: 保证guest可以和host(宿主机)通讯的.保证ip地址在一个网段里.宿主机安装完毕后(vmware),会自动生成两块网卡,vmnet1和vmnet ...

  2. 鸟哥的linux 实训教程,鸟哥的Linux基础学习实训教程

    1.理想的Linux上机实践课程 每周一次.每次三小时的学与练 本书所有例题讲解,均经过鸟哥在大专院校实施多年来的测试,对于学生的理解具有相当满意的效果. 2. 提供一致性教学环境 让学习者不再有陌生 ...

  3. linux 基础命令总结

    1.mkdir 创建目录 -p 创建多级目录 mkdir -p /data/test -m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask -p, --p ...

  4. day55 linux 基础以及系统优化

    Linux系统基础优化及常用命令   Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...

  5. Linux基础知识题解答(四)

    题目来自老男孩BLOG:http://oldboy.blog.51cto.com/2561410/1709569,比较适合新手,空余的时候做一下,可以巩固Linux基础知识,有不对的地方欢迎指正. 1 ...

  6. Linux基础急速入门:用 TCPDUMP 抓包

    简介 tcpdump是一个用于截取网络分组,并输出分组内容的工具.凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具 tcpdump 支持针对网络层.协议.主机. ...

  7. linux复制后权限变化,学霸Linux基础命令吐血总结,给你当新华字典用

    Linux基础命令学习笔记 一.登录Linux [root@linux~]# root:目前使用者账户 @之后接的内容:主机名称 root为管理员账户 #:提示字元(对于root账户) $:提示字元( ...

  8. LINUX基础知识笔记全

    LINUX基础知识整理 1.Linux 基本知识 2.Linux 文件和目录管理 vim scp sftp 压缩和归档 文件访问权限 脚本 3.Linux 用户和群组管理 sudo ssh opens ...

  9. OracleOCP认证 之 Linux基础

    Linux 基础 一.SHELL 1: Shell 简介 shell 是用户和Linux 操作系统之间的接口.Linux 中有多种shell, 其中缺省使用的是bash. Linux 系统的shell ...

最新文章

  1. 生成静态文件的新闻系统核心代码
  2. linux命令 ps aux | grep xxx详解
  3. 视频生产环境下的音视频解决方案
  4. 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?
  5. 南海云课堂春季11(T)K1 拓展:单调队列
  6. table表格锁定任意数量列或行
  7. Neo4j的安装与配置
  8. 南卡耳机和漫步者耳机哪个好?看完这篇文章就能知道哪个好
  9. Refactor this method to reduce its Cognitive Complexity from 65 to the 15 allowed. [+22 locations]
  10. 使用VMware通过vmdk文件创建XP虚拟机
  11. 为什么脑子里有电波声_为什么有时会听到“电波声”?
  12. OCR图片预处理之去除印章(一)
  13. 中基鸿业小故事投资理财大启示
  14. C++实现中文大写与阿拉伯数字的相互转换(类封装)
  15. 2023年网络安全比赛--网页渗透测试中职组(超详细)
  16. python入门教学视频材料整理-免费
  17. 仓央嘉措 ❤《见与不见》的全文 ❤
  18. 【java】BMI:体重指数,又称身体质量指数,英文为Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。
  19. 运放的几个应用:精密整流电路、理想二极管
  20. 我编码中的爱打#号的习惯

热门文章

  1. 【HTML】section标签理解
  2. python浏览器自动化测试_Selenium+Python进行web自动化测试(Demo+API)
  3. oracle udev绑定,关于oracle RAC 通过udev绑定磁盘
  4. 基于SNMP的网络管理软件的使用
  5. nginx服务器同一个IP怎么配置多个域名?
  6. c语言大小写null,C语言NULL指针
  7. VC、PE和天使投资是什么意思?有什么区别?
  8. 对于代码中有大量的 if/else 有什么优化思路?
  9. Visp_ros学习笔记(三):对于视觉伺服过程中关键函数的理解
  10. Handlebars 框架的XSS问题