musl libc ldso 动态加载研究笔记:动态库的加载次序与初始化次序

这篇具有很好参考价值的文章主要介绍了musl libc ldso 动态加载研究笔记:动态库的加载次序与初始化次序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  • musl ldso 是按照什么次序加载动态链接的应用程序的共享库的?如果共享库之间有依赖, musl ldso 如何处理先初始化哪个 共享库?

  • musl ldso 的代码可以在 musl 官方代码: ldso\dlstart.cldso\dynlink.c,其中动态库加载部分主要在 ldso\dynlink.c 中的 load_library 函数中实现。

动态库加载次序

  • 当前 musl ldso 加载次序 与 readelf -d xx.so 依赖动态库列表显示的一致,这个加载次序是链接时的依赖库的次序。如果想调整这个次序,就调整链接时的各个依赖库的先后次序即可

musl libc ldso 动态加载研究笔记:动态库的加载次序与初始化次序,动态加载技术,笔记,musl,ldso,加载次序

  • 动态库的加载次序,是按次序把依赖的动态库加载到内存,这个次序依次加载大部分情况下不重要

  • 如果两个没有依赖的共享库需要加载,动态库的初始化有先后的次序关系,建议调整链接时的动态库的先后次序,让需要先初始化的动态库放在前面(左边)

  • 依赖库初始化次序:这个重要,被依赖的先初始化,musl ldso 的设计满足这个要求,比如 A->B->C,则动态库初始化次序是:C->B->A。文章来源地址https://www.toymoban.com/news/detail-672924.html

到了这里,关于musl libc ldso 动态加载研究笔记:动态库的加载次序与初始化次序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CocosCreator3.8研究笔记(二十四)CocosCreator 动画系统-动画编辑器实操-关键帧实现动态水印动画效果

    上一篇,我们介绍了动画编辑器相关功能面板说明,感兴趣的朋友可以前往阅读: CocosCreator3.8研究笔记(二十三)CocosCreator 动画系统-动画编辑器相关功能面板说明。 熟悉了动画编辑器的基础操作,那么再使用动画编辑器制作动画就比较简单了。 今天,我们来介绍动画编辑

    2024年02月07日
    浏览(45)
  • linux入门---动静态库的加载

    我们来模拟一个场景,首先创建两个头文件 根据文件名便可以得知add.h头文件中存放的是加法函数的声明,sub.h头文件中存放的是减法函数的声明,既然有头文件那么也应该存在对应的源文件,所以这里再创建两个源文件: 然后就在头文件中添加函数的声明,在源文件中添加

    2024年02月10日
    浏览(40)
  • [.NET学习笔记] -.NET6.0项目动态加载netstandard2.0报错但项目添加引用则正常的问题

    .NET6.0的项目使用netstandard2.0版本的动态链接库。若是在项目中直接添加引用,应用netstandard2.0项目或者netstandard2.0编译后的dll均能正常工作。但如果通过xcopy等方式,额外将对应的dll复制到执行目录,会执行失败。调用方式一致,均为Assembly.Load(XXXDllName)。 错误信息为: System

    2024年02月12日
    浏览(40)
  • Linux 动静态库的制作,使用和加载

    关于动静态库的初步理解,我们在Linux基础环境开发工具的使用(二):动静态库的理解,make,makefile 这篇博客中进行了详细介绍,大家可以去看一下 今天我们直接介绍动静态库的制作和使用,分别站在库的制作者和使用者的角度来分析 而我们要使用的文件就是我们在 Linux文件系列: 深

    2024年04月15日
    浏览(63)
  • 改变用户体验:Whirl动画加载库的无限可能

    哈喽!欢迎来到程序视点。今天小二哥要分享的不是 Animate.js,也不是 Move.js,而是能提供108种加载动画的库: Whirl . 让加载动画变得丰富多彩! 话不多说,直接来看例子。 以上只是冰山一角。whirl的CSS加载动画集合中有108种选项供你挑选。选中喜欢的动画后,点击“Grab th

    2024年02月06日
    浏览(53)
  • 动态链接库(三)--动态链接库的使用

    本文示例基于上章的Dll1项目生成的动态链接库学习简单使用. 所需文件:因为上节的示例没有添加Dll1.h头文件,因此这里只需Dll1.dll,Dll1.lib 在本文中会添加Dll1.h头文件以优化动态链接库的创建. 既然要在项目中使用别人创建生成的dll, 那么首先得将dll加载到自己得项目中去才

    2024年02月03日
    浏览(39)
  • 【动态库】Ubuntu 添加动态库的搜索路径

    在运行程序时,经常遇到下面这种动态库加载失败的情况,这时往往是系统在动态库的搜索路径下没有找到对应的库文件导致的。  目录 一、使用 LD_LIBRARY_PATH 二、修改 /etc/ld.so.conf 环境变量 LD_LIBRARY_PATH是动态库的搜索路径,一般情况下为空,可执行文件运行时,会去这个环

    2024年02月07日
    浏览(45)
  • 【linux深入剖析】动态库的使用(续) | 动静态库的链接

    🍁你好,我是 RO-BERRY 📗 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 回顾上节,我们在创建了动态库libmymath.so 我们使用指令 gcc main.c -L. -lmymath -L . (-L + 路径表示myc这个库在哪

    2024年04月15日
    浏览(41)
  • 详解Linux下静态库/动态库的生成和使用(含代码示例和操作流程)&&动态库和静态库的区别

    关于gcc的使用方法可以参考下方链接博客: Linux下详解gcc编译过程(含代码示例) gcc使用教程 库是一种组件技术。 库里封装了数据和函数,提供给用户程序调用。 库只执行到第三阶段编译,没有链接。 库的使用可以使程序模块化,提高程序的编译速度,实现代码复用。

    2024年02月15日
    浏览(45)
  • musl pwn 入门 (1)

    近年来,musl libc作为一个轻量级的libc越来越多地出现在CTF pwn题之中,其和glibc相比有一定的差距,因此本文我们就musl libc最常考的考点——内存分配,进行musl libc的源代码审计。 不同于glibc多达四五千行代码,大小超过10w字节的malloc.c,musl libc中的malloc.c大小甚至都不到1w字节

    2023年04月25日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包