Linux下动态链接库加载路径及搜索路径问题

  1. 动态链接库加载路径及搜索路径是什么

动态链接库(Dynamic Linking Library)是在程序运行时才动态链接的库,实现了程序的共享。Linux系统下的动态链接库有两种,一种是共享目标文件(Shared Object),简称‘SO’文件,另一种是可执行文件(Executable),简称‘ELF’文件,共享目标文件是常用的形式。

动态链接库加载路径用来告诉操作系统动态链接库在哪里,是一个环境变量,叫做LD_LIBRARY_PATH,通常存放在/etc/profile文件中或者用户工作区的.bashrc或者.bash_profile文件中。

动态链接库搜索路径是操作系统寻找动态链接库的路径,其顺序如下:

    1. DT_RPATH
    2. LD_LIBRARY_PATH
    3. /etc/ld.so.cache
    4. /lib, /usr/lib
  1. 示例说明

  2. 示例一

假设我们已经编译好了一个动态链接库文件libtest.so,它的绝对路径是/usr/local/lib/libtest.so,对于需要使用libtest.so的程序而言,需要告诉操作系统动态链接库在哪里,这时候需要设置LD_LIBRARY_PATH。在终端输入如下命令:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

这样就能让操作系统知道动态链接库的路径。

  • 示例二

假设我们的动态链接库文件libtest.so已经放到了系统默认的搜索路径(/lib,/usr/lib,并放到/etc/ld.so.cache中),这时候我们的程序需要调用这个库,那就不需要设置LD_LIBRARY_PATH,程序会自动在默认路径下搜索动态链接库。如果库文件不在系统默认路径下,就需要将动态链接库路径加到LD_LIBRARY_PATH中。

总之,动态链接库加载路径及搜索路径的理解对于Linux系统的使用和维护都非常重要。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux下动态链接库加载路径及搜索路径问题 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Android反编译看看手Q口令红包的实现原理

    以下是使用标准的Markdown格式文本,详细讲解Android反编译手Q口令红包的实现原理的完整攻略: Android反编译手Q口令红包的实现原理 步骤一:反编译APK文件 使用工具如apktool或dex2jar将APK文件反编译为可读取的源代码。 示例代码: apktool d app.apk -o app 步骤二:分析源代码 在反编译后的源代码中,查…

    other 2023年10月14日
    00
  • model将int转换为string

    在机器学习中,经常需要将整数类型的数据转换为字符串类型,以便进行后续的处理和分析。以下是将int类型转换为string类型的完整攻略包括两个示例说明。 步骤1:使用ToString()方法将int转换为string 在C#中,可以使用ToString()方法将int类型转换为string类型。以下是一个示例代码: int num = 123; string …

    other 2023年5月6日
    00
  • Win10内置杀软Windows Defender怎么从右键菜单扫描项去掉?

    要从 Win10 内置的杀软 Windows Defender 的右键菜单扫描项中去掉,可以按照以下步骤进行: 打开注册表编辑器。 在注册表中定位到:HKEY_CLASSES_ROOT*\shellex\ContextMenuHandlers\WindowsDefender。 将 WindowsDefender 键下的 ShellFolder 子键删除。 关…

    other 2023年6月27日
    00
  • Java中字符串常见题之String相关讲解

    Java中字符串常见题之String相关讲解 String类的定义 在Java中,String是一个类,它代表字符串类型。 String类是final类,它是Java的内置类之一,也是Java程序中最常用的类之一。 String的常用方法 创建字符串对象 直接赋值 java String str1 = “Hello World”; 构造函数 java Str…

    other 2023年6月20日
    00
  • 验证手机号码的js方法

    验证手机号码的js方法 随着移动互联网的快速发展,手机成为人们生活中必不可少的一部分。在开发网站或移动端应用时,手机号码验证是一个非常常见的需求。在本篇文章中,将介绍如何使用JS来验证手机号码的有效性。 使用正则表达式验证手机号码 JS中,可以使用正则表达式来验证手机号码格式是否正确。下面是一个验证手机号码格式的正则表达式: /^1\d{10}$/ 正则表达…

    其他 2023年3月28日
    00
  • PostgreSQL LIKE 大小写实例

    PostgreSQL LIKE 大小写实例攻略 在 PostgreSQL 中,LIKE 运算符用于模式匹配,可以根据指定的模式搜索字符串。默认情况下,LIKE 运算符是区分大小写的,这意味着它会将大写和小写字符视为不同的字符。下面是关于如何在 PostgreSQL 中使用 LIKE 运算符进行大小写匹配的攻略。 1. 大小写敏感匹配 要进行大小写敏感的匹配,…

    other 2023年8月16日
    00
  • AMD Ryzen入门四核处理器禁用多线程

    AMD Ryzen入门四核处理器禁用多线程攻略 AMD Ryzen入门四核处理器基于Zen架构,支持SMT技术(即Simultaneous Multi-Threading)。SMT技术可以让处理器同时处理多个线程,并且提升系统整体的性能。但是,当你使用一些特定的应用程序,如游戏时,多线程反而会降低性能。那么,如何禁用多线程呢? 步骤一:进入系统配置 首先,右…

    other 2023年6月27日
    00
  • 详解Python3中的多重继承和混入类

    详解Python3中的多重继承和混入类 什么是多重继承 多重继承是指一个类可以从多个父类继承属性和方法。在Python中,我们可以使用逗号分隔多个父类。 下面是一个例子,让我们来看看多重继承如何工作: class Base1: pass class Base2: pass class MultiDerived(Base1, Base2): pass 在上面的…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部