链接与装载
kayshi2018
这个作者很懒,什么都没留下…
展开
-
链接文件简要说明
链接文件格式.lds在最终生成可执行文件的时候,会确定各个段的位置SECTIONS { .text 0 : {*(.text)}//所有文件的.text段都放在地址0开始的位置 .rodata :{*(.rodata)}//所有文件的.rodata段都放在地址.text地址之后 .data 0x30000000 : AT(0x800)//数据段 运行的地址是0x30000000 : 加载的地址是0x800 {原创 2020-05-17 00:29:03 · 1261 阅读 · 0 评论 -
显示运行时链接(dlopen,dlsym,dlerror,dlclose,)
支持动态链接的系统往往支持一种更灵活的模块加载方式,叫做显示运行时链接(Eplict Run-time Linking),有时也叫做运行时加载。就是在代码中运行时,调用动态库(.so文件),并这个动态库的内部函数。主要有以函数接口void *dlopen(const char*filename, int flag)参数1:const char*filename: 动态库的路径参数2:...原创 2020-04-12 10:34:47 · 464 阅读 · 0 评论 -
延迟绑定(PLT)
ELF动态连接时,会PLT(procesure linkage table)的方式来进程链接其他模块的函数。就时不会把所有的函数都链接号,而是在第一次去调用的时候区连接#include<stdio.h>#include<stdlib.h>int main(int argc, char **argv){ puts("Hello World\n");...原创 2020-04-10 14:28:21 · 1021 阅读 · 0 评论