首页 > 系统相关 >Linuxy应用程序加载动态链接库的默认路径

Linuxy应用程序加载动态链接库的默认路径

时间:2023-08-18 10:24:12浏览次数:39  
标签:ld Linuxy 路径 系统 应用程序 etc so 动态链接库

在 Linux 系统中,当应用程序执行时,系统会按照一定的规则去寻找动态链接库(也称为共享库或 .so 文件)。系统使用一组默认的搜索路径来查找这些库,以便在运行时正确加载所需的库。以下是 Linux 系统寻找动态链接库的一般规则:

  1. 系统默认路径
    Linux 系统会在一组默认的路径中查找动态链接库。这些路径通常包括 /lib/usr/lib。在 64 位系统中,可能还会包括 /lib64/usr/lib64

  2. LD_LIBRARY_PATH 环境变量
    如果设置了 LD_LIBRARY_PATH 环境变量,系统会在这个环境变量中指定的路径中查找动态链接库。例如:

    export LD_LIBRARY_PATH=/path/to/library/directory
    

    注意,使用 LD_LIBRARY_PATH 可能会导致库的混乱和不稳定,因此谨慎使用。

  3. /etc/ld.so.conf 文件
    系统会读取 /etc/ld.so.conf 文件中列出的路径,以查找动态链接库。在这个文件中,您可以列出需要搜索的目录路径。

  4. /etc/ld.so.conf.d/ 目录
    /etc/ld.so.conf.d/ 目录中包含了其他库路径的配置文件。这些文件被系统读取以添加额外的库搜索路径。

  5. rpath/rpath-link 编译选项
    在编译应用程序时,您可以使用 -Wl,-rpath-Wl,-rpath-link 等编译选项来指定运行时搜索库的路径。

  6. Cache 文件
    Linux 系统维护着一个动态链接库的缓存文件,用于加快库的查找速度。此缓存通常位于 /etc/ld.so.cache

系统会按照上述规则依次查找动态链接库,直到找到所需的库或无法找到为止。如果找不到所需的库,应用程序可能会失败并报告缺失的库错误。通常情况下,将库放置在系统默认的库路径下是最为推荐和稳定的做法。

标签:ld,Linuxy,路径,系统,应用程序,etc,so,动态链接库
From: https://www.cnblogs.com/feipeng8848/p/17639698.html

相关文章

  • 【那些遇到的认知问题】如何同时运行 2 个 CUDA 应用程序?
    前言PC只有一个Nvidia显卡,程序A正在运行,训练分类,显卡内存占用不到50%,如果想同时运行另一个训练语义分割的程序B,是可行的嘛?结论理论上,如果对CUDA和GPU编程熟悉,可以对内核应用程序进行序列化,使得一个应用程序的内核正在运行时,GPU不会调度另一个应用程序的内核,类似于多进程。否则,......
  • 我的第一篇博客--深入了解.NET:构建强大的应用程序和平台
    导言:在现代软件开发领域中,微软.NET框架是一个备受推崇和广泛采用的平台。借助.NET,开发人员可以构建强大、高性能的应用程序和跨平台解决方案。本篇博客将带您深入了解.NET框架的独特功能和优点,并探索其在不同领域的应用。简介.NET框架解释.NET框架的基本概念和组件,包括公共语言运......
  • 构建跨平台的移动应用程序:Xamarin入门
    介绍:在移动应用开发领域,跨平台的解决方案变得越来越受欢迎。Xamarin是一种流行的跨平台移动应用开发框架,它允许开发者使用C#语言来构建同时运行在iOS和Android平台上的应用程序。本篇博客将带您入门Xamarin开发,展示如何构建跨平台的移动应用程序。步骤1:安装和设置环境在开始之前,......
  • 基于Kubernetes云原生技术的低代码PaaS平台,快速构建企业级应用程序
    低代码开发平台只需要编写简单的配置文件即可构建企业级应用程序。低代码PaaS平台可以在云端开发、部署、运行低代码应用程序。使用独立数据库模型,基于Kubernetes云原生技术,每个租户均可拥有一套独立的存储、数据库、代码和命名空间,实现了100%的租户数据隔离,并可以随时迁移到私有部......
  • applicationrunner用法 是一个方便的接口,可以用于在应用程序启动后执行一些逻辑,比如数
    applicationrunner用法原文链接:https://wenku.csdn.net/answer/d8f7f4398bc786e79ed79f09b540878fApplicationRunner是SpringBoot中的一个用于运行应用程序的类。它可以帮助你快速启动和运行你的应用程序,而不需要写很多代码。你可以通过实现ApplicationRunner接口并重写run方法......
  • 利用Docker简化机器学习应用程序的部署和可扩展性
    利用Docker的强大功能:简化部署解决方案,确保可扩展性,并简化机器学习模型的持续集成/持续交付(CI/CD)流程。机器学习(ML)近年来取得了爆炸性增长,导致对稳健、可扩展和高效部署方法的需求增加。传统方法往往需要帮助将ML模型操作化,原因包括训练和服务环境之间的差异或扩展的困难。Docker是......
  • 【愚公系列】2023年08月 WPF控件专题 WPF应用程序组成
    (文章目录)<hrstyle="border:solid;width:100px;height:1px;"color=#000000size=1">一、WPF组成WindowsPresentationFoundation由两个主要部分组成:引擎和编程框架。1、WindowsPresentationFoundation引擎。WindowsPresentationFoundation(WPF)引擎是一个用于创建Wi......
  • C++简单动态链接库的创建和引用(VS2022)
    原文:https://blog.csdn.net/XianLiangcheese/article/details/127125135总结在前:创建dll:1.打开VS2022,创建一个“动态链接库”新项目2.建立一个需要导出的类3.编辑导出类里面的内容,其中需要在导出的方法,也就是在外面引用的方法,只需要在其类型声明前面加上“__declspec(dllexport)......
  • C#重启IIS指定网站和指定应用程序池
    usingJinher.AMP.BTP.Deploy;usingMicrosoft.Web.Administration;usingRedis.Helper;usingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Th......
  • C#重启IIS指定网站和指定应用程序池, 以及资源释放。
    1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading;6usingSystem.IO;7usingMicrosoft.Web.Administration;8910namespaceRecoveryWebSite11{12classProgr......