动态链接库的路径配置-rpath/ld.so.conf/LD_LIBRARY_PATH

Nginx启动报错找不到libcrypto.so.1.1?别慌,5分钟搞定软链接修复 本文详细解析了Nginx启动时遇到的`libcrypto.so.1.1`缺失报错问题,提供了从诊断到解决的完整方案。通过创建软链接、修改环境变量或系统级配置等方法,快速修复动态链接库问题,并分享预防措施和进阶排查技巧,帮助开发者高效解决类似问题。 阅读详情

相关链接:https://blog.youkuaiyun.com/knowledgebao/article/details/84315842


ld.so 搜索库路径的优先级是这样的:

  1.  RPATH ,编译链接时加入 -rpath 参数指明所谓的 RUNPATH ,这样可执行文件(或者依赖其他动态链接库的动态链接库)就能告诉 ld.so 到哪里去搜索对应的动态链接库了。
  2.  LD_LIBRARY_PATH ,对于没有设定 RPATH 的可执行文件或者动态链接库,我们可以用 LD_LIBRARY_PATH 这个环境变量通知 ld.so 往哪里查找链接库。
  3. /etc/ld.so.conf ,/etc/ld.so.conf.d/*.conf 。系统对 ld.so 的路径配置文件。
  4. /usr/lib 、 /lib 和 /usr/local/lib ,系统默认路径。

存放库文件到指定目录,使可执行程序能够找到库文件有三种方法:

第一种,通过ldconfig命令
       ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. 
    这里面涉及到的关键内容有命令:ldconfig,配置文件目录:/etc/ld.so.conf.d,配置文件在/etc/ld.so.conf内容由用户编辑,缓冲文件/etc/ld.so.cache。下面举个例子,比如你在部署软件时,有些动态库安装在exe目录下,可以通过如下方法实现,
1)配置exe.conf文件,里面加一行~/exe,然后将该文件放到/etc/ld.so.conf.d目录下;
2)在/etc/ld.so.conf文件中增加一行include ld.so.conf.d/exe.conf
3)执行 ldconfig命令
之后程序运行时,会自动增加在exe目录中搜索动态库。

第二种,通过LD_LIBRARY_PATH环境变量
        可以通过在.bashrc( Bash ShELL 的配置文件https://blog.youkuaiyun.com/knowledgebao/article/details/84566099)或者.cshrc(C SHELL 的配置文件)中配置该环境变量,LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开.

同样是上面的例子,可以通过以上的方法来实现
在.bashrc或.cshrc中增加一行,export LD_LIBRARY_PATH = ~/exe:$LD_LIBRARY_PATH即可。

第三种,通过编译选项-Wl, -rpath指定动态搜索的路径
       -Wl选项告诉编译器将后面的参数传递给链接器。

关于ldconfig和/etc/ld.so.conf的补充:

先上一张图:

/etc/ld.so.conf记录系统默认动态链接库的路径,其中第一句include ld.so.conf.d/*.conf表示/etc/ld.so.conf.d/*.conf下的所有文件都作为/etc/ld.so.conf的内容。也就是说你添加搜索路径的时候,可以直接在/etc/ld.so.conf增加,或者在/etc/ld.so.conf.d目录下增加一个以.conf结尾的文件。

ldconfig程序的目的是使对/etc/ld.so.conf生效。修改完/etc/ld.so.conf需要执行ldconfig命令。ldconfig使所有的库文件都被缓存到ld.so.cache中。实际程序只会从ld.so.cache中寻找依赖库文件。

如果你给系统目录下安装了新的so库,需要执行一遍ldconfig命令,否则即使库存在,由于没加载到ld.so.cache中而无效。通过上面的介绍,对/etc/ld.so.conf.d/的作用就比较清晰了。

关于ldconfig的详细信息参考链接:

 

参考资料:

1,ldconfig命令用法笔记


有任何问题,请联系:knowledgebao@163.com

树莓派4B + 海康工业相机:手把手教你搞定Python-OpenCV环境与动态链接库配置(避坑指南) 本文详细介绍了如何在树莓派4B上配置Python-OpenCV环境并与海康工业相机集成,解决动态链接库配置中的常见问题。通过系统级配置方案和Python实战技巧,帮助开发者快速搭建稳定的机器视觉系统,避免常见的`OSError`错误。 阅读详情

相关推荐

05-rpath解决so动态库依赖1

1. 赖库程动态库或可执件,是何找赖的库的是下录顺来• the RPATH binary header (set at build-time) of the l

linux动态链接库的加载顺序

一、Linux 动态库选择顺序指: 1. 编译程序时用到动态库,该从那些地方查找,按照怎么样的顺序查找? 2. 运行程序时需要动态库,该从那些地方查找,按照怎么样的顺序查找? 二、gcc 编译程序时查找SO顺序如下: 1. gcc 编译时参数-L指定的路径 2. 环境变量 LIBRARY_PATH 3. 系统默认库位置 /lib /usr/lib 三、Linux 程...

深之JohnChen的专栏 9910

Python入门基础教程(非常详细)

Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」。Python类库(模块)极其丰富,这使得Python几乎无所不能,不管是传统的Web开发、PC软件开发、Linux运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python都能胜任。这套Python基础教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。如果有小朋友出于兴趣学习Python,请引导他阅读本教程的前半部分,这是基础,可以降低学习成本;...

Yuki1127918的博客 34万+

动态库链接和路径问题总结

动态库链接和路径问题总结

SanShuiGeGe的博客 1262

硬件-电源-智能保护:eFuse选型与实战设计全攻略

本文深入解析eFuse在硬件电源设计中的关键作用与实战选型技巧。作为智能保护器件,eFuse能提供毫安级精度的过流保护、多重故障防护和智能恢复功能,比传统保险丝快1000倍以上。文章详细介绍了eFuse的工作原理、五大选型维度和PCB布局要点,帮助工程师有效预防电源异常导致的硬件损坏,适用于AI服务器、工业控制等场景。

weixin_30879169的博客 200

泛微OA表单设计实战:如何快速实现自定义多选浏览框(附完整配置步骤)

本文详细介绍了在泛微OA中快速实现自定义多选浏览框的完整配置步骤。针对招聘提报、活动审批等需要从海量数据中规范选择多个条目的业务场景,文章从理解需求、构建数据源、设计查询页面到创建浏览框控件,提供了清晰的实战指南,帮助开发者高效解决复杂数据选择难题,提升表单操作体验。

yog99的博客 1049

Linux 自定义动态链接库目录

往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig如果往上面两个目录以外加动态库时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig。如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。用export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。这只是一种临时的解决方案,在没有权限或临时需要的时候使用。l。...

JineD的博客 2427

构建高可用CephFS NFS网关:NFS-Ganesha与RADOS集群的深度整合

本文详细介绍了如何构建高可用的CephFS NFS网关,通过NFS-Ganesha与RADOS集群的深度整合,实现高效文件共享。文章涵盖核心架构、部署实战、性能调优及避坑指南,帮助用户解决Ceph客户端兼容性问题,提升存储访问效率。特别强调高可用设计,确保服务稳定性,适用于金融、电商等高要求场景。

weixin_26976635的博客 254

linux设置动态链接库搜索路径方法及理解 bashrc 和 profile

1、执行 exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 最后的 . 表示把当前目录加入到动态链接库查找的目录中去 2、上述方法设置是临时的 另外一种方法: sudo vim /etc/ld.so.conf 添加库路径 如 ./ (表示当前目录) 添加保存后 sudo ldconfig 以下是详细说明及开启shell自动设置的方法,把设置保存在.bashrc文件中: ld.so 动态共享库搜索顺序 1、ELF可执行文件中动态段DT_RPATH指定;gc..

pingis58的博客 4125

【原创】关于西门子S120 的电气图纸设计

我们首先要了解一下模块的基本信息:SINAMICS 功率模块 PM240-2 三相交流380-480V+10/-10% 47-63Hz;至此,我们选择的驱动系统配置的资料都已经查找完毕,接下来就是根据每个部件的功能接口和我们需要实现的功能画出接线连接图,这样关于伺服电机控制,硬件部分设计就完成了。2)FSA - FSC 型功率模块 PM240-2 的屏蔽连接板外形尺寸图,所有数据以毫米(英寸)为单位。1)FSA 型功率模块 PM240-2 的外形尺寸图,所有数据以毫米(英寸)为单位。

Qinmingyue13的博客 2640

YOLOv11 改进 - 注意力机制 | GC Block(GlobalContext Block)全局上下文块:三重变换捕获全局依赖,提升复杂场景鲁棒性

本文介绍了全局上下文块(GC Block)及其在YOLOv11中的集成应用。GC Block是GCNet的核心组件,结合了NLNet和SENet的优势,通过上下文建模、特征变换和特征融合三个模块,高效捕获特征图中的全局依赖关系,在提高模型性能的同时降低计算成本。我们将GC Block引入YOLOv11,在检测头部分的不同尺度特征图上应用该模块。实验表明,改进后的YOLOv11在目标检测任务中表现良好,展现了GC Block在实际应用中的价值。

魔改工程师的博客 952

RPATH 设置动态库的搜索路径

链接动态库 程序如果在链接时使用了动态库,就必须在运行时找到动态库。 Linux 的可执行程序在执行的时候默认是先搜索 /lib 和 /usr/lib 这两个目录,然后按照 /etc/ld.so.conf 里面的配置搜索绝对路径。 同时,Linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用,用户可以通过设定它来查找除默认路径之外的其他路径,如查找 /work/lib 路径,你可以在 /etc/rc.d/rc.local 或其他系统启动后即可执行到的脚本添加如下语句:LD_LIBRARY_P

择一事终一生 2069

小工匠聊架构-分布式场景下的并发幂等性常见的解决方案

Pre 我们来回顾下单体时代 单体时代,应用部署在一台主机上,可以使用JVM级别的锁来控制并发请求 。 随着应用规模的不断扩大,集群化或者微服务化的分布式部署越来越普及,每个应用都是一个单独的JVM应用,所以单体时代的这种处理方式已经无法满足当前架构下的业务需求了。 JVM级别的锁已经无法满足跨进程之间访问控制了,进而演化出来了分布式锁。 分布式锁 能否解决幂等性问题? 分布式锁解决什么问题? 简言之: 解决跨进程间无法共享本地资源的问题 ,解决的是分布式场景下并发访问的问题。 为什么需要确保并发.

小工匠 2万+

c 编译的时候都会去哪些目录寻找动态链接库

c 编译的时候都会去哪些目录寻找动态链接库

xie__jin__cheng的博客 876

Vue3+Openlayers教程导航页【目录】

欢迎来到 Vue3+Openlayers 系列教程,这里是我在 优快云 编写的所有 Vue3+Openlayers 系列相关文章的索引页,适合初学者到进阶用户系统阅读。👀 更多教程正在持续更新中,欢迎关注我,一起探索 Openlayers 的强大魅力!

小彭的博客 1269

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Linux下运行时调用动态链接库.so的三种方法(笔记)

在/etc/ld.so.conf.d/下创建xxx.conf,在文本中加入.so所在路径,如:/usr/xxx等等,然后使用相应ldconfig命令使之生效。 将.so所在路径添加为PATH环境变量。 在编译命令中使用-Wl,-rpath=./参数,并将相应.so拷贝到执行目录;当然也可以将‘./’指定为其他目录。 注意:-L参数添加的lib搜索目录只用于编译时,运行时需使用上述方法之一,否则...

sniperkang的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Linux动态链接库顺序,linux中动态链接库的搜索顺序

linux中动态链接库的搜索顺序//// by kirk,2008.11.21,文中有bug请搞紧与我联系:-)//在接手一个很古老的程序时,发现其所使用的动态库都实在是太陈旧了,正式运行环境中部署的库都是相适应的,而目前的开发测试环境中均是部署的新的升级版本。为了能在这些环境下开发测试,程序得能在自定义的路径里来搜索。因此在这里复习一下linux中程序对动态链接库的搜索顺序,如下所述:1.首先...

weixin_40005795的博客 468

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Linux下动态库(so)的搜索路径

程序编译时,通过-Wl, -rpath参数指定的路径; 环境变量LD_LIBRARY_PATH指定的路径 /etc/ld.so.conf或/etc/ld.so.conf.d/目录下任何一个文件中指定的路径 /lib路径 /usr/lib路径 加入动态链接库的路径 su - root echo "/usr/local/lib" >> /etc/ld.so.conf echo "/usr/local/lib64" >> /etc/ld.so.conf ldconfig -v .

hallyz的博客 2366

Linux下so动态库查看与运行时搜索路径的设置--掌握这个就够了

ldd命令 linux 下可以使用ldd查看可执行文件所需要的动态链接库(*.so)。 注:下文用so代替动态链接库文件。 // 举个例子 ~$ ldd /bin/ls linux-vdso.so.1 => (0x00007ffe06386000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 ...

SurpassLi的专栏 232

linux动态链接库的编译和使用

其实在/etc/ld.so.conf文件最后的注释写了,/lib, /lib64, /usr/lib, /usr/lib64是系统默认的动态库查询目录,即使环境变量、-Wl,-rpath、/etc/ld.so.conf都不修改,直接把so放到这4个目录里,系统也能自动查找到的。用于在程序运行期间查找动态库的路径,我们可以把libmylib.so放到/usr/local/lib64目录下,并把/usr/local/lib64目录写到。/etc/ld.so.conf文件更改之后,需要执行下。

qq_39854211的博客 1594

将动态库libmodbus.so.5的路径纳入动态链接库

2. 添加库路径到系统配置。# 1. 创建或编辑配置文件。# 2. 更新动态链接器缓存。# 1. 检查库文件是否存在。# 3. 验证是否生效。

haoyj2222的博客 334

linux查找程序的lib,linux库文件头文件查找顺序

Include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()写在specs内的后来用-D -I -L指定的gcc环境变量设定(编译的时候)ld.so的环境变量(这是run time的时候)一、头文件gcc 在编译时如何去寻找所需要的头文件 :※所以header file的搜寻会从-I开始...

weixin_39850599的博客 386

Linux 添加动态链接库

总结下来首要有3种办法: 1. 更改/etc/ld.so.conf配置文件,然后刷新 vim /etc/ld.so.conf add /where/you/install/lib sudo ldconfig   2.用ln将须要的so文件链接到/usr/lib或者/lib这两个默认的目次下边 ln -s /where/yo

588

Linux动态库搜索路径

众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。

332

gcc头文件指定及动态链接的使用

gcc头文件指定及动态链接的使用本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题。另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题。本文包含了很多的例子,具有很强的操作性,希望读者自己去走一遍。一.#include 与#include “”#include 直接到系统指定的某些目录中去找某些头文件。#include “

刘新明的专栏 2536
上一篇: gstreamer依赖编译库
下一篇: GStreamer专栏索引
knowledgebao
博客等级 码龄15年 401粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值