`
kongweile
  • 浏览: 523235 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

libdl.so的用途

 
阅读更多

通过对某些bin或者so执行ldd.可以看到他们运行前需要连接的共享库.但是有时候会看到有2个与dl相关的so.

ld-linux.so和libdl.so.这时候我就有些困惑了.他们分别做了什么工作呢?

原来,ld-linux.so的工作是在程序运行前把程序需要的so找到并进行连接.然后程序才开始运行.

然而,在linux中是支持在程序运行时才进行so库的连接的,函数包括dlopen,dlclose,dlsym,dlerror.这几个函数的实现库就是libdl.so,所以libdl.so的工作是在程序运行时找到指定的so并连接.

分享到:
评论

相关推荐

    libldap.so.2、liblber.so.2等linux系统缺少的库文件完整版

    标题提到的"libldap.so.2"和"liblber.so.2"是Lightweight Directory Access Protocol (LDAP) 库的组成部分,用于支持LDAP协议的客户端或服务器程序。这些库文件在某些Linux发行版(如CentOS 5.x)中可能不默认安装,...

    libsdl2.28.3_so_arm64-v8a_armeabi-v7a_x86_x64_full.rar

    针对描述中的"libsdl2.28.3_so_arm64-v8a_armeabi-v7a_x86_x64_full.rar",我们可以推断这个压缩包包含了适用于四种不同CPU架构的动态链接库(.so文件),这意味着它可以在运行Android和Windows的多种设备上使用。...

    免安装的perf程序,基于内核4.18.0-553.27.1

    libdl.so.2 => /lib64/libdl.so.2 (0x00007f57ec8d7000) libelf.so.1 => /lib64/libelf.so.1 (0x00007f57ec6be000) libdw.so.1 => /lib64/libdw.so.1 (0x00007f57ec421000) libcrypto.so.1.1 => /lib64/lib

    半静态编译的bpftrace:v0.16.0

    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fef15403000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fef1531c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fef11fd...

    ARM架构下,Qt打包时常缺少的库文件,包含了相关的network模块以及MYSQL驱动

    libdl.so.2 libmysql.so.16 libQt5Sql.so.5 libgcc_s.so.1 libmysql.so.16.0.0 libQt5Sql.so.5.9.9 libglib-2.0.so.0 libpcre.so.3 libstdc++.so.6 libgthread-2.0.so.0 libpthread.so.0 libstdc++.

    nginx离线安装全依赖及下载源

    在IT行业中,尤其是在服务器管理和系统部署的领域,离线安装软件是解决网络不稳定或无网络环境下的重要手段。本文将详细介绍如何在没有网络的情况下,通过预先下载的依赖包来完成Nginx的离线安装,同时也会涉及到...

    hostapd-2.9源码

    Hostapd-2.9源码是Linux系统下创建Wi-Fi热点的重要工具,它是一个开源的、用户空间的接入点(AP)守护进程,能够使具备无线网卡的Linux设备转变为无线接入点,允许其他设备通过Wi-Fi连接到该设备并共享网络。...

    使用c++编写和使用.so动态链接库

    这些函数都在`<dlfcn.h>`头文件中声明,且位于`libdl.so`库中。 `dlopen()`的`filename`参数是库文件的路径,`flag`参数决定符号绑定的时间。`RTLD_LAZY`延迟绑定直到函数首次调用,`RTLD_NOW`则立即绑定所有符号。...

    Python中static相关知识小结

    非 static 编译 不指定额外参数直接编译 Python: $ ./configure $ make 查看所依赖的共享库: ... libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fab5c140000) libutil.so.1 => /lib/x86_6

    解决Linux程序编译链接动态库版本的相关问题

    前言 不同版本的动态库可能会不兼容,如果程序在编译时指定动态库是某个低版本,运行是用的一个高版本,可能会导致...libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fb3357e0000) librt.so.1 => /lib64/librt.

    libmemleak:一个共享库,可以通过 LD_PRELOAD 显示动态选择的时间间隔内每个回溯每秒的内存增量

    用法示例LD_PRELOAD='/usr/local/lib/libmemleak.so' ./a.out 可能还需要预加载libbfd和libdl,因此请使用LD_PRELOAD='/usr/local/lib/libmemleak.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu...

    RK3588 Android上应用使用OpenCL,所需的所有so

    主要是提供能在RK3588开发板上,应用开发能使用OPenCL来进行GPU加速所需的所有so

    elftree:ELF库依赖查看器

    ELF树 以树形式显示ELF二进制文件的库依赖性。 它支持折叠和展开子树并显示相关信息。 用法 $ elftree Usage: elftree [] $ elftree -h Usage of elftree: -p Show library path ... libdl.so.2

    chroot在Ubuntulinux下的配置.pdf

    cp -av /lib/x86_64-linux-gnu/{ld-2.13.so,libc.so.6,libc-2.13.so,libdl-2.13.so,libdl.so.2} ./lib/x86_64-linux-gnu/ ``` 修改 passwd 文件 使用以下命令将 /etc/passwd 文件的最后一行内容拷贝到 Chroot 环境...

    spack-batteries-included:安装不依赖系统的spack

    *从技术libfuse2.so.2 , libfuse2.so.2 , libpthread.so.0 , libc.so.6 , libdl.so.2仍然是必需的dep,但应该将它们安装在您的系统上(希望如此)。 它是如何工作的? spack.x包含一个AppImage运行时的轻微破解...

    搭建IC设计环境问题集锦

    - 报错示例:`Dlopen failed to open 'libdl.so'` - 解决方法: - 安装 `glibc-devel`:`yum install glibc-devel -y`。 5. **libaprutil-1.so.0 缺失问题**: - 解决方法: - 使用 `yum install -y httpd` 来...

    patchelf:一个用于修改ELF可执行文件的动态链接器和RPATH的小实用程序

    PatchELF是用于修改现有ELF可执行文件和库的简单实用程序。 特别是,它可以执行以下操作: ... 例如,如果可执行文件引用一个库libfoo.so ,并且具有RPATH /lib:/usr/lib:/foo/lib ,而libfoo.so只能在/

    使用chroot监狱限制SSH用户访问指定目录.docx

    2. 识别 bash 所需的分享库,如下所示复制它们到 lib64 中:`ldd /bin/bash`、`mkdir -p /home/test/lib64`、`cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/` ...

    毛子哥的游戏服务器架构详细

    - 服务器还依赖于一系列共享库来运行,比如libcrypto.so.10、libcurl.so.4、libdl.so.2、libncurses.so.5、libm.so.6、libpthread.so.0、libc.so.6、ld-linux-x86-64.so.2、librt.so.1、libtinfo.so.5。 2.2 硬件...

Global site tag (gtag.js) - Google Analytics