链接器中——链接脚本
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,链接脚本链接器根据说明具体的原则完成具体的工作?答案是:链接脚本。1链接脚本的意义链接脚本用于描述链接器处理目标文件和库文件的方式1.合并各个目标文件中的段2.重定位各个段的起始地址3.重定位各个符号
千家信息网最后更新 2025年02月07日链接器中——链接脚本
链接脚本
链接器根据说明具体的原则完成具体的工作?
答案是:链接脚本。
1链接脚本的意义
链接脚本用于描述链接器处理目标文件和库文件的方式
1.合并各个目标文件中的段
2.重定位各个段的起始地址
3.重定位各个符号的最终地址
SECTIONS // 关键字,描述各个段在内存中的布局{ .text 0x08048400: // 代码段起始地址 { *(.text) // 所有文件的代码段合并进入可执行程序 } . = 0x01000000; // 设当前地址 s1 = .; // 标识符S的存储地址 . += 4; s2 = .; .data 0x0804a800: { *(.data) } .bss : { *(.bss) }}
注意事项:
1.各个段的链接地址必须符合具体的平台规范
2.链接脚本中能够直接定义标识符并指定存储地址
3.链接标本中能够指定源代码中的标识符的存储地址
4.在Linux中,进程代码段(.text)的合法起始地址为【0x08048000,0x08049000】
2 MEMORY的使用
默认情况下:链接器认为程序应该加载进入同一个个存储空间。
嵌入式系统中,如果存在多个存储空间,必须使用MEMORY进行存储区域定义。
MEMORY 的属性定义:
MEMORY{RAM0 (WX) : ORIGIN = 0X20000000, LENGTH = 1024KRAM1 (!X) : ORIGIN = 0X04000000, LENGTH = 256K }SECTION{ .text : { *(.text) } > RAM0 .data : { *(.data) } > RAM0 .bss : { *(.bss) } > RAM1}
3 ENTRY 命令指定入口点
ENTRY(program)SECTIONS{ .text 0x08048400: { *(.text) }}
这里有一点需要说明,在没有指定入口函数时,默认的入口函数时_start函数,原因在于链接器使用了默认的链接脚本,内部明确指明_start函数为入口函数。
可以使用 ld --verbose 可以查看默认链接脚本的内容。
链接
地址
脚本
存储
函数
入口
代码
文件
标识
标识符
起始
目标
程序
空间
定位
合法
事项
关键
关键字
内存
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
系统数据库逻辑结构设计
服务器工作好吗
一本软件开发教程书籍
确保两会期间将校园网络安全
数据库清楚数据语法
snc网络技术
叮咚网络技术武汉
opc服务器是网关设备吗
大数据商务软件开发是什么
建行数据库
服务器usb接口图解
山西能源局网络安全情况报告
mc基岩版纯净生存服务器
最新最快的代理服务器地址
软件开发公司的官网
服务器 提权教程
天津定制软件开发经历
软件开发功能实现
新冠疫情下网络安全问题
想从事翻译软件开发
学校网络技术人员申请
宜兴专业软件开发销售厂
福建福昕软件开发股票行情
电网无功管理系统软件开发
开机自动打开服务器管理器
关系数据库课程
安卓软件开发平台 C需要
网络技术推广咨询云速捷
网络安全进校园演出方案
网络技术专员岗位职责