手把手带你了解链接全过程(二)

手把手教你用STM32发送带附件的邮件 (二、邮件功能实现) 上节回顾 上一小节中我们使用正点原子的潘多拉开发板与RT-Thread 的 IoT Board SDK,并使用 RT-Thred Studio 成功运行了wifi例程,涉及到以下几个知识点: 1. 如何使用 RT-Thread Studio 导入MDK工程。 2. 如何配置 RT-Thread Studio 的工程参数(头文件、库文件、链接文件)。 3. 如何使用 RT-Thread Studio 创建一个原生的 RT-Thread Studio 工程。 4. 如何使用RT-Thread ... 阅读详情

手把手带你了解链接全过程(二)


link

位置无关代码

这是共享库实现的原理.

也就是,可以加载而无需重定位的代码称为位置无关代码(Position-Independent Code PIC),Gcc使用-fpic编译,且编译共享库必须使用

在X86-64系统中,不需要做特殊处理.目标模块中的符号的引用会自动成为PIC

PIC数据引用

GOT(global offset table)全局偏移量表

通过上述过程完成对动态库数据的引用

PIC函数引用

其中PLT(Procedure Linkage Table)过程链接表

只要目标模块中引用了共享库的任何函数,都会生成一个GOT和一个PLT

通过上述的过程,可以完成PIC函数引用

库打桩机制

就是链接器支持截获碎共享库的函数调用取而代之执行自己的代码,可以追踪特殊库函数的调用

  • 编译时打桩
  • 链接时打桩
  • 运行时打桩

有兴趣可以自己取了解

处理目标文件的工具

  • AR 创建静态库,插入,删除,提取常用
  • STRINGS列出目标文件中所有可打印字符串
  • NM列出目标文件中的符号表中定义的符号
  • SIZE列出目标文件中节的名字和大小
  • READELF显示目标文件的完整结构
  • OBJDUMP显示一个目标文件所有信息
  • LDD可执行文件运行依赖的动态库

例如

ldd aout

	linux-vdso.so.1 =>  (0x00007ffd3ddd1000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fdbef802000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdbef5ec000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdbef222000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdbeef19000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fdbefb84000)

其中ld-linux-x86-64.so就是动态链接器

手把手教你实现App深度链接跳转 在当今的移动应用开发中,App深度链接跳转是一项非常实用的功能。它可以让用户在点击一个链接后,直接跳转到App内的特定页面,而不是仅仅打开App的首页。本文章的目的就是详细地教大家如何实现这一功能,范围涵盖了Android和iOS两个主流移动平台。本文首先会介绍相关的核心概念,让大家对App深度链接跳转有一个清晰的认识。接着会讲解核心算法原理和具体操作步骤,包括代码实现。然后通过项目实战,展示如何在实际项目中运用这些知识。之后会介绍实际应用场景、推荐相关工具和资源,分析未来发展趋势与挑战。 阅读详情

相关推荐

VMware虚拟机调用NVIDIA显卡全攻略:从3D加速到直通与vGPU

显卡虚拟化技术是虚拟化领域的关键组成部分,它通过在虚拟机中模拟或直接分配物理GPU资源,实现了图形渲染与通用计算的加速。其核心原理在于通过Hypervisor层对GPU指令进行拦截、转换或直接映射,从而平衡资源隔离与性能损耗。这项技术的核心价值在于提升资源利用率、实现计算环境隔离,并支持AI训练、3D渲染、科学计算等高性能负载的灵活部署。在应用场景上,轻量级图形界面加速、CUDA学习验证适合使用虚拟3D加速;而追求极致性能的机器学习训练、专业渲染则需依赖PCIe直通技术;对于企业级GPU资源池化与多租户共享

weixin_32308101的博客 1026

手把手带你了解链接全过程(一)

手把手带你了解链接全过程(一) 文章目录手把手带你了解链接全过程(一)目标文件可重定位目标文件格式目标文件分类**链接器的作用****符号和符号表****符号解析**静态库链接器如何引用静态库重定位加载可执行目标文件动态链接库应用程序中加载和链接共享库 目标文件 可重定位目标文件格式 首先要知道 目标文件就是纯粹的字节块的集合 这些块中有: 包含程序代码,程序数据,链接器与加载器的数据结构 .text已编译程序代码 .rodata只读数据 .data已经初始化的全局和静态变量 .bss未初始化全局

ahelloyou的博客 2149

SAP Fiori单点登录避坑指南:从SAML原理到实战,解决‘第一次登录跳转主页失败’和‘偶发进不了单点’

本文深入解析SAP Fiori单点登录(SSO)的SAML实战与疑难排查,涵盖SAML协议核心机制、SICF登录优先级控制及安全诊断工具的高级用法。针对‘首次登录跳转主页失败’和‘偶发单点登录失效’问题,提供从配置优化到生产环境稳定运行的全面解决方案,助力企业高效实现数字化转型。

weixin_29327977的博客 405

VideoAgentTrek-ScreenFilter步骤详解:从访问链接到获取带框视频全过程

本文介绍了如何在星图GPU平台上自动化部署VideoAgentTrek-ScreenFilter镜像,实现智能屏幕检测功能。该工具基于YOLO模型,能自动识别图片或视频中的显示器、手机等屏幕设备,并标注位置与类别,可广泛应用于内容审核、视频素材筛选等场景,提升分析效率。

StarlightOwl56的博客 1055

简单搭建 可视化日志+链路追踪

JAVA 可视化日志、链路追踪、plumeLog、Tlog、Logback

qq_39535439的博客 1204

小爱音箱Play增强版刷机接入大模型:自定义唤醒词与远程控制全攻略

智能音箱作为家庭语音入口,受限于厂商预设技能,难以满足个性化需求。通过串口刷机与Linux系统分区改造,可以完全掌控设备底层,将豆包、通义千问等大模型API接入原有音频链路,实现真正智能的语音问答。自定义唤醒词打破了“小爱同学”的唯一唤醒方式,结合ESP32-S3外挂模块,还能优化远场拾音。更深入的应用在于将音箱打造为家庭中控,通过大模型工具调用解析自然语言指令,实现远程控制电脑、智能灯等设备。本文从设备选型、拆机串口、系统备份到语音链路搭建,完整梳理了小爱音箱Play增强版的改造路径,适合具备动手能力的开

weixin_30036289的博客 723

手把手,从无到有带你用vue进行项目实战 系列二(cdn、gzip性能加速篇)

一、前言 在系列一中桃子叔叔介绍了使用iview-cli构建项目框架并基于框架进行的相关改造,主要包括: 路径规范 dev-server配置 启用热更新 封装axios 解决跨域 需要温习的小伙伴请点击此处回顾手把手,从无到有带你用vue进行项目实战 系列一(搭建框架篇) 二、问题 经过以上的改造,已经能够满足基本生产开发的需求了,运行 npm run dev 便可以查看开发环境...

franktaoge的博客 5953

PyTorch 最新安装教程(2021-07-27)

PyTorch 最新安装教程(2021-07-27)前言1. 安装 Anaconda2. 检查显卡,更新驱动3. 创建PyTorch环境4. 配置清华TUNA镜像源5. 安装 PyTorch6. 测试 前言 万事开头难! 这句话又一次被我验证。 记得前不久刚陷入Tensorflow2.0的安装困境,这一次又被PyTorch 搞哭辽。 孩子太难了o(╥﹏╥)o,不过还好最终成功安装,感谢全网资源,感谢大佬们的博客!被我一次一次试了出来。 1. 安装 Anaconda Anaconda 是一个用于科学计算的 P

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 23万+

手把手,从无到有带你用vue进行项目实战 系列一(搭建框架篇)

前言 之前公司在vue使用上大多都是后台应用,使用的是iview-admin框架,加起来也做了不少的项目,整体的感觉是非常舒服,首先在ui方面: iview的ui清新简单,组件完整且没有坑,基本上各种情况都帮你想到,按照文档直接来就行。框架方面,iview-admin已经帮你集成好了包括router、vuex、i18n、sass或less、axios在内的诸多插件,并使用webpack...

franktaoge的博客 4万+

安卓开发工程师在车载项目中的角色与技术实践

本文全面探讨了安卓开发工程师在车载项目中的关键角色,重点分析了技术栈(Kotlin/Java/Gradle)、岗位职责和任职要求。文章详细解读了车载安卓开发的核心技能,包括架构设计、性能优化和缺陷修复,并提供了20个针对性面试问题及答案。特别强调了车载环境的特殊需求,如硬件集成、安全认证和实时性要求。通过技术深度与实践案例的结合,为开发者和企业提供了从需求分析到系统优化的完整指导,旨在提升车载安卓开发的专业水平和招聘效率。

郑伟强dev的专栏 131

【Unity 实用工具篇】 | Unity网格破碎插件 unity-fracture

前面写过一篇Unity中物体破碎效果的插件:【Unity 实用工具篇】 | Unity物体破碎效果 OpenFracture 本文介绍一个另外的工具unity-fracture,也可以实现网格破碎效果,且功能与OpenFracture略有差异。

努力前行,总会成为自己心中的那道光 1万+

学大模型必看!手把手带你从零微调大模型!

学大模型必看!手把手带你从零微调大模型!

Python单行客的博客 2115

AI产品经理面试宝典第94天:RAG知识库构建与预处理策略面试指南

本文深入解析RAG知识库构建的核心挑战与预处理策略,涵盖文档格式转换、问答对生成及自动化测试全流程,为AI产品经理提供面试必备的实战方法论与避坑指南,助你精准应对技术深度类问题。

打造全国最全的AI Agent开发知识领域的博客 312

Carson带你学Android:手把手带你了解实用的Android Jetpack

我将主要介绍Android Jetpack的相关内容,包括其作用、特点 & 组成,希望你们喜欢。

Carson带你学Android 1万+

假人有限元模型

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

手把手带你了解Linux基础指令

ls就是对于目录文件来说,就是显示目录文件下所有文件的名字属性,-l就是显示更多的文件属性,-a就是目录下所有的文件,-d就是显示当前目录文件属性而不是当前目录下面的文件属性。cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。来查看一个文件的内容!

GOATLong的博客 776

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

手把手带你创建HAL版本MDK工程模板

不同的开发工具所产生的工程文件是不一样的,常见的开发工具有:MDK、IAR ,等等。但由于官网在国外,下载速度很慢,而且需要填写各种信息,所以大家可以直接使用我给大家提供的固件包,反正也是从官网下载的。这个文件夹主要存放的是一些常用的系统级核心驱动代码,比如说时钟配置、延时函数、串口等等,像这些配置都是非常经常用到,我们没必要每次都自己手写,直接复用即可。此外,在 CMSIS 文件夹下还需要拷备一个 Include 目录,但这个目录我也不知道哪里去搞,大家可以从我给大家提供的模板工程里直接复制即可。

码到成功 1016

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【实践】学大模型必看!手把手带你从零微调大模型!

今天分享一篇技术文章,你可能听说过很多大模型的知识,但却从未亲自使用或微调过大模型。大模型微调本身是一件非常复杂且技术难度很高的任务,因此本篇文章仅从零开始,手把手带你走一遍微调大模型的过程,并不会涉及过多技术细节。希望通过本文,你可以了解微调大模型的流程。微调大模型需要非常高的电脑配置,比如GPU环境,相当于你在已经预训练好的基础上再对大模型进行一次小的训练。但是不用担心,本篇文章会使用阿里魔塔社区提供的集成环境来进行,无需使用你自己的电脑配置环境。

2401_85377976的博客 1797

学AI大模型必看!手把手带你从零微调大模型!

今天分享一篇技术文章,你可能听说过很多大模型的知识,但却从未亲自使用或微调过大模型。

2301_81940605的博客 1758

零基础小白学大模型必看!手把手带你从零微调大模型!

今天分享一篇技术文章,你可能听说过很多大模型的知识,但却从未亲自使用或微调过大模型。 今天这篇文章,就手把手带你从零微调一个大模型。 大模型微调本身是一件非常复杂且技术难度很高的任务,因此本篇文章仅从零开始,手把手带你走一遍微调大模型的过程,并不会涉及过多技术细节。 希望通过本文,你可以了解微调大模型的流程。

2401_85325397的博客 1045

炫酷又实用的发送邮箱链接修改密码

通过向邮件中发送链接修改密码保姆级教程。

m0_52864796的博客 2491

【实践】手把手带你从零微调大模型(非常详细)!零基础入门到精通,收藏这一篇就够了

在左侧的文件列表,Llama-Factory的文件夹里,打开examples\train_qlora(注意不是 train_lora)下提供的llama3_lora_sft_awq.yaml,复制一份并重命名为yi_lora_sft_bitsandbytes.yaml。大模型微调本身是一件非常复杂且技术难度很高的任务,因此本篇文章仅从零开始,手把手带你走一遍微调大模型的过程,并不会涉及过多技术细节。基于本实验,你就完成了一个简单的微调,完整的走了一遍模型的微调过程,是不是还挺简单的?

Javachichi的博客 965
上一篇: 手把手带你了解链接全过程(一)
下一篇: Lc2045到达目的地的第二短时间
黑猫爱小鹿
博客等级 码龄8年 1万+粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值