GNU链接器(LD):符号的赋值及实例解析

news/2024/9/23 5:13:34 标签: GNU链接器, LD, 符号赋值, 符号

0 参考资料

GNU-LD-v2.30-中文手册.pdf
GNU linker.pdf

1 前言

一个完整的编译工具链应该包含以下4个部分:
(1)编译器
(2)汇编器
(3)链接器
(4)lib库
在GNU工具链中,对应的是:
(1)编译器:GCC(GNU Compiler Collection,GNU编译器套件)
(2)汇编器:GAS(GNU Assembler,GNU汇编器)
(3)链接器:LD(GNU Linker,GNU链接器
(4)lib库:glibc(GNU C Library,GNU C 库)
本文介绍GNU链接器脚本中符号的赋值及实例解析。

LD_18">2 GNU链接器LD):符号的赋值及实例解析

2.1 符号的赋值

我们可以使用任何C语言的赋值运算符为符号赋值>符号赋值,如下:

symbol = expression;
symbol += expression;
symbol -= expression;
symbol *= expression;
symbol /= expression;
symbol <<= expression;
symbol >>= expression;
symbol &= expression;
symbol |= expression;

说明:
(1)symbol = expression可以为symbol赋值symbol,而其它操作必须在symbol已经定义的情况下进行
(2)expression后面必须添加分号;
(3)句点(.)这个符号指示当前位置计数器

2.2 实例解析

下面这个例子展示了在链接脚本三个不同位置赋值操作的区别:

_point = 0;
SECTIONS
{
	.text :
	{
		*(.text)
		_etext = .;
	}
	_bdata = (. + 3) & ~ 3;
	.data : { *(.data) }
}

说明:
(1)_point被定义为0
(2)_etext被定义为.text输入分区之后的首地址
(3)_bdata被定义为.text输出分区之后的首地址向上4字节对齐后的值


http://www.niftyadmin.cn/n/5671384.html

相关文章

对网页聊天项目进行性能测试, 使用JMeter对于基于WebSocket开发的webChat项目的聊天功能进行测试

登录功能 包括接口的设置和csv文件配置 ​​​​​​ 这里csv文件就是使用xlsx保存数据, 然后在浏览器找个网址转成csv文件 注册功能 这里因为需要每次注册的账号不能相同, 所以用了时间函数来当用户名, 保证尽可能的给正确的注册数据, 时间函数使用方法如下 这里输入分钟, 秒…

javascript数组的常用方法汇总

在 JavaScript 中&#xff0c;数组是一个非常常用的数据结构&#xff0c;JavaScript 提供了许多方法来操作和处理数组。以下是 JavaScript 中数组的常用方法&#xff0c;分为不同类型进行介绍&#xff1a; 1. 添加/删除元素 push()&#xff1a;向数组末尾添加一个或多个元素&a…

黎巴嫩BP机爆炸事件启示录:我国应加快供应链安全立法

据报道&#xff0c;当地时间9月17日下午&#xff0c;黎巴嫩首都贝鲁特以及黎巴嫩东南部和东北部多地都发生了BP机爆炸事件。当时的统计数据显示&#xff0c;爆炸造成9人死亡&#xff0c;约2800人受伤。9月18日&#xff0c;死亡人数上升到11人&#xff0c;受伤人数超过4000。 目…

PHP转Go很丝滑开发框架设计思路-把php优秀设计借鉴到Go框架设计里面-保留php开发习惯又能提供高软件性能

框架从以下设计要求使得达到有快速开发有又保证软件性能。框架要满足我们追求的大道至简、简单易容、减少开发者心智负担、快乐开发目标。 框架代码结构简单 框架设计的结构一定要简单&#xff0c;简单才能让新手容易上手、后续代码维护成本低、集成大项目才容易&#xff08;…

C语言6大常用标准库 -- 2.<stdlib.h>

目录 引言 2. C标准库--stdlib.h 2.1 简介 2.2 库变量 2.3 库宏 2.4 库函数 2.5 注意事项 &#x1f308;你好呀&#xff01;我是 程序猿 &#x1f30c; 2024感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&#xff0c;共同成长&…

银河麒麟桌面操作系统如何添加WPS字体

银河麒麟桌面操作系统如何添加WPS字体 1、使用场景2、操作方法步骤一&#xff1a;下载字体文件步骤二&#xff1a;打开终端步骤三&#xff1a;进入字体文件所在目录步骤四&#xff1a;拷贝字体文件到WPS字体目录步骤五&#xff1a;更新字体缓存步骤六&#xff1a;重启WPS Offic…

计算机毕业设计springboot+vue高校教学实施评教系统springcloud微服务分布式

目录 功能和技术介绍系统实现截图开发核心技术介绍&#xff1a;使用说明开发步骤编译运行需求分析系统设计软件测试核心代码部分展示详细视频演示源码获取 功能和技术介绍 本项目包含程序源码和MySql脚本和文档,idea开发,支持Eclipse。使用vue的本质是SpringFramework【IoC&am…

Win11家庭版找不到gpedit.msc文件怎么办

首先确定电脑系统。 winI打开设置。 点击系统-系统信息&#xff0c;可以看到系统的版本 如果是家庭版&#xff0c;没有gpedit.msc文件&#xff0c;执行以下步骤 首先我们打开记事本&#xff0c;并输入以下内容&#xff08;注意空格&#xff09;&#xff1a; echo offpushd &qu…