/lib /usr/lib /usr/local/lib的简单区分

本文详细解释了Linux系统中/lib, /usr/lib 和 /usr/local/lib等目录的区别及用途,帮助读者理解不同库文件的位置安排及其意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先需要知道:usr的并不是user的意思,而是unix system resrouces。

简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的.

区别:

/lib目录下放置的是/bin和/sbin目录下系统程序所需的库文件。

/usr/lib/目录下含有更多用于用户程序的库文件。

/usr/local/bin目录下是户自己特定的的库文件。不用担心会被系统升级之类的行为覆盖,破坏。

### 如何正确使用和管理 Linux 系统中的 `/usr/local/lib` 路径 #### 添加库文件至动态链接器配置 为了使位于 `/usr/local/lib` 的共享库能够被系统识别并用于程序运行时的动态链接,可以编辑全局的 `ld.so.conf.d` 文件夹下的配置文件。创建一个新的配置文件来指定额外的库路径是一种常见做法。 ```bash echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/usr_local_lib.conf sudo ldconfig ``` 上述命令会将 `/usr/local/lib` 加入到系统的动态链接库查找路径中,并刷新缓存以便立即生效[^1]。 #### 使用环境变量临时添加库路径 对于不需要永久修改的情况,可以通过设置 `LD_LIBRARY_PATH` 来临时增加特定目录作为附加的库搜索位置。这通常适用于测试阶段或是当不想影响其他应用程序的行为时采用的方法。 ```bash export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ``` 此方式仅对当前shell session有效,在新打开终端窗口后需重新设定该变量[^2]。 #### 解决符号链接错误提示 如果遇到关于某个 `.so` 库不是符号链接的问题,则可能是由于安装过程中出现了异常情况所引起的。此时应该检查目标文件是否存在以及其属性是否正常;必要情况下可尝试重建正确的符号链接指向实际版本号的具体实现文件。 例如修复 CUDA 下 CUDNN 库的相关问题: ```bash ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8 \ /usr/local/lib/libcudnn.so.8 ``` 这条指令建立了从具体版本到通用名称之间的软链关系,从而解决了找不到合适库文件的问题[^3]。 #### 验证更改效果 完成以上任一步骤之后,可通过以下命令验证新的库路径已被成功加入到了动态链接器的搜索范围内: ```bash ldd --version # 查看 ldd 版本信息 ldd some_executable_or_shared_object_file # 显示给定对象依赖的所有共享库及其解析后的绝对路径 ``` 通过这种方式确认 `/usr/local/lib` 中的新库已经被正确加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值