Linux系统如何修改动态链接库搜索路径 ld.so.conf配置教程

梦宇大大_5484

梦宇大大_5484

2026-04-08

976人浏览

原创

必须运行 sudo ldconfig 才能使 /etc/ld.so.conf 修改生效,否则系统仍用旧缓存;路径需写入 /etc/ld.so.conf.d/ 下的 .conf 文件,库须符合 libxxx.so.x 命名且含有效 soname。

linux系统如何修改动态链接库搜索路径 ld.so.conf配置教程

为什么改了 /etc/ld.so.conf 还是找不到库?

直接改完文件不运行 sudo ldconfig,系统压根不会重新加载配置。这是最常被忽略的一步——ld.so.conf 只是静态配置,ldconfig 才是真正生成缓存 /etc/ld.so.cache 的命令。没执行它,所有修改都无效。

常见错误现象:./a.out: error while loading shared libraries: libxxx.so: cannot open shared object file,但你确认库文件明明在刚加的路径里。

  • 必须用 sudo ldconfig(普通用户权限不够)
  • 建议加 -v 参数观察是否真扫描到了你的路径:sudo ldconfig -v 2>&1 | grep your_path
  • 如果路径下有库但没被识别,检查库文件权限(至少需 rx)、是否为 ELF 格式(file libxxx.so)、架构是否匹配(如 x86_64 库不能用在 arm64 上)

该往 /etc/ld.so.conf 里写什么路径?

只写目录路径,一行一个,不能带通配符、不能写具体库名、不能加空格或注释符号(# 在这里不是注释,会被当路径一部分)。例如:

/usr/local/lib64
/opt/myapp/lib

更推荐的做法是:不要直接编辑 /etc/ld.so.conf,而是新建 /etc/ld.so.conf.d/myapp.conf(文件名任意,但必须以 .conf 结尾),然后写入路径。这样便于管理、卸载时可一键删除,也避免误改主配置。

绘蛙AI转3D
绘蛙AI转3D

绘蛙AI转3D是一款AI 3D生成工具,平铺图快速转换为3D立体展示图。

下载
  • /etc/ld.so.conf.d/ 下所有 .conf 文件都会被自动读取
  • 路径中不要包含 $LD_LIBRARY_PATH 这类变量,它在这里不展开
  • 避免写 /home/user/lib 这类用户目录——系统级动态链接器默认不信任非标准位置,且多用户环境下不可靠

LD_LIBRARY_PATH 和 ld.so.conf 到底谁优先?

LD_LIBRARY_PATH 环境变量优先级高于 ld.so.conf,但它只影响当前 shell 及其子进程,且对 setuid 程序完全无效(出于安全限制)。而 ld.so.conf 是系统级配置,生效范围广,但需要 ldconfig 刷新。

使用场景要分清:

  • 临时调试:用 LD_LIBRARY_PATH=/path/to/lib ./myapp
  • 部署服务:必须走 /etc/ld.so.conf.d/ + ldconfig,否则 systemd 服务或 crond 任务根本看不到你的路径
  • 混合使用时注意冲突:比如 LD_LIBRARY_PATH 里有同名库,会覆盖 ld.so.conf 中的版本,可能引发 ABI 不兼容

为什么 ldconfig -p | grep xxx 查不到刚加的库?

ldconfig -p 显示的是当前 /etc/ld.so.cache 缓存里的库列表,不是实时扫描磁盘。所以即使路径已写入配置、也执行过 ldconfig,仍可能查不到——常见原因有三个:

  • 库文件名不符合命名规范:动态库必须是 libxxx.so.x 格式(如 libz.so.1),不能是 libxxx.so 软链接本身(ldconfig 只索引带 soname 的文件)
  • 缺少 soname:用 readelf -d /path/to/libxxx.so | grep SONAME 检查,若为空,需重建库或用 patchelf --set-soname libxxx.so.1 libxxx.so
  • 路径权限问题:ldconfig 默认跳过 world-writable 目录(如 /tmp),也会跳过没有执行权限的目录

真正可靠的方式是先确认 ldconfig -v 输出里有没有扫到你的目录,再看该目录下是否列出了目标库——别只信 -p。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux系统

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.25

334

5

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

949

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2720

5

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3930

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3373

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2533

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6110

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5762

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3373

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Linux man-pages 项目
Linux man-pages 项目

共0课时 | 0人学习

Linux系统运维及项目正式上线
Linux系统运维及项目正式上线

共14课时 | 2.8万人学习

Linux负载均衡视频教程
Linux负载均衡视频教程

共7课时 | 1.9万人学习