You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何ldconfig未链接或缓存我的共享库?Ubuntu 18.04环境求助

问题分析与解决方案

首先,咱们来拆解你遇到的问题:ldconfig 没有识别到你的共享库,核心原因是它只会扫描 /etc/ld.so.conf 中直接列出的目录,不会递归扫描子目录。你把 libhztest.so 放到了 /usr/local/lib/hazeltest/ 这个子目录里,而 /etc/ld.so.conf 里只写了 /usr/local/lib,所以 ldconfig 根本没去扫这个子目录,自然不会把库加入系统缓存。

至于为什么设置 LD_LIBRARY_PATH 能运行?因为这个环境变量是给动态链接器(ld-linux.so)用的,它会在程序运行时额外搜索你指定的路径,不需要依赖 ldconfig 生成的缓存,但这种方式是临时的,且不如系统级缓存可靠。

下面是两种靠谱的解决办法:

方法一:将子目录加入系统动态链接库配置(推荐)

这是最规范的做法,适合需要长期使用的库:

  1. 在 /etc/ld.so.conf.d/ 目录下新建一个自定义配置文件,比如:
    sudo touch /etc/ld.so.conf.d/hazeltest.conf
    
  2. 编辑这个文件,添加你的库所在的子目录路径:
    sudo echo "/usr/local/lib/hazeltest" >> /etc/ld.so.conf.d/hazeltest.conf
    
  3. 运行 ldconfig 更新系统缓存:
    sudo ldconfig
    
  4. 验证一下,看看库是否被识别:
    ldconfig -p | grep libhztest
    
    如果输出里能看到 libhztest.so,就说明成功了。

方法二:直接将库放到 /usr/local/lib 目录下

如果你不需要分类存放库,也可以直接把库移到 /usr/local/lib 下,然后更新缓存:

sudo mv /usr/local/lib/hazeltest/libhztest.so /usr/local/lib/
sudo ldconfig

额外提示

你之前给目录设置 chmod 777 权限太开放了,存在安全风险。目录权限设为 755,库文件权限设为 755 就足够让系统和普通用户访问了:

sudo chmod 755 /usr/local/lib/hazeltest/
sudo chmod 755 /usr/local/lib/hazeltest/libhztest.so

内容的提问来源于stack exchange,提问作者NiGhMa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:10:42