RealView® 编译工具 链接器和实用程序指南

3.1 版


Table of Contents

前言
关于本手册
适用对象
使用本手册
印刷约定
更多参考出版物
反馈
对 RealView 编译工具的反馈
关于本手册的反馈
1. 简介
1.1. armlink
1.2. armar
1.3. fromelf
1.4. 与传统对象和库的兼容性
2. 链接器命令语法
2.1. 关于 armlink
2.1.1. armlink 的输入
2.1.2. armlink 的输出
2.1.3. 排序命令行选项
2.1.4. 使用环境变量指定命令行选项
2.2. armlink 命令语法
2.2.1. 访问帮助和信息
2.2.2. 工程模板选项
2.2.3. 指定输入文件列表
2.2.4. 控制链接器行为
2.2.5. 指定输出类型和输出文件名
2.2.6. 为映像指定内存映射信息
2.2.7. 控制调试信息
2.2.8. 控制映像内容
2.2.9. 控制胶合代码生成
2.2.10. 指定字节寻址模式
2.2.11. 生成与映像相关的信息
2.2.12. 控制链接器诊断消息
2.2.13. 使用 via 文件
2.2.14. 其他
2.2.15. 控制与遗留对象的兼容性
3. 使用基本链接器功能
3.1. 指定映像结构
3.1.1. 对象和映像的构建块
3.1.2. 映像的加载视图和执行视图
3.1.3. 指定映像的内存映射
3.1.4. 映像入口点
3.2. 节布局
3.2.1. 按属性排序输入节
3.2.2. 使用 FIRST 和 LAST 放置节
3.2.3. 对齐节
3.2.4. 排序包含 Thumb 代码的执行区
3.3. 优化和修正
3.3.1. 公共调试节删除
3.3.2. 公共组或节删除
3.3.3. 未使用节删除
3.3.4. 未使用函数删除
3.3.5. 链接器反馈
3.3.6. RW 数据压缩
3.3.7. “PI 到绝对”胶合代码
3.3.8. 胶合代码生成
3.3.9. 在重叠执行区重复使用胶合代码
3.3.10. 跳转内联
3.4. 使用命令行选项创建简单映像
3.4.1. 类型 1,一个加载区和几个连续执行区
3.4.2. 类型 2,一个加载区和几个不连续的执行区
3.4.3. 类型 3,两个加载区和几个不连续的执行区
3.5. 使用命令行选项处理 C++ 异常
3.6. 获得有关映像的信息
3.6.1. 使用与映像相关的信息
4. 访问映像符号
4.1. ARM/Thumb 同义词
4.2. 访问链接器定义的符号
4.2.1. 与区相关的符号
4.2.2. 与节相关的符号
4.2.3. 导入链接器定义的符号
4.3. 访问其他映像中的符号
4.3.1. 创建 symdefs 文件
4.3.2. 读取 symdefs 文件
4.3.3. symdefs 文件格式
4.4. 隐藏和重命名全局符号
4.4.1. 控制文件格式
4.4.2. 控制文件命令
4.5. 使用 $Super$$ 和 $Sub$$ 覆盖符号定义
4.6. 符号版本控制
4.6.1. 版本
4.6.2. 缺省版本
4.6.3. 创建区分版本的符号
5. 使用分散加载描述文件
5.1. 关于分散加载
5.1.1. 为分散加载定义的符号
5.1.2. 使用分散加载描述文件指定堆栈和堆
5.1.3. 何时使用分散加载
5.1.4. 分散加载命令行选项
5.1.5. 具有简单内存映射的映像
5.1.6. 具有复杂内存映射的映像
5.2. 分散加载描述文件的形式语法
5.2.1. BNF 表示法和语法
5.2.2. 分散加载描述文件语法概述
5.2.3. 加载区描述
5.2.4. 执行区描述
5.2.5. 输入节描述
5.2.6. 解析多个匹配
5.2.7. 解析路径名
5.2.8. 分散加载文件中的表达式求值
5.3. 指定区和节地址的示例
5.3.1. 在分散加载描述中选择胶合代码输入节
5.3.2. 创建根执行区
5.3.3. 将区放在固定地址中
5.3.4. 使用重叠区放置节
5.3.5. 为根区分配节
5.3.6. 保留空白区
5.3.7. 放置 ARM 库
5.3.8. 在页面边界上创建区
5.3.9. 使用预处理指令
5.4. 简单映像的等效分散加载描述
5.4.1. 类型 1,一个加载区和几个连续执行区
5.4.2. 类型 2,一个加载区和几个不连续的执行区
5.4.3. 类型 3,两个加载区和几个不连续的执行区
6. BPABI 和 System V 共享库和可执行文件
6.1. 基本平台 ABI
6.1.1. 获得更多信息
6.2. 使用 BPABI 共享库和可执行文件
6.2.1. 关于 BPABI
6.2.2. 符号导入和导出
6.2.3. 符号可见度
6.2.4. 符号版本控制
6.2.5. 内存映射
6.3. 使用 SVr4 共享库和可执行文件
6.3.1. 构建 ARM Linux 可执行文件
6.3.2. 访问符号
6.3.3. 异常表
6.3.4. 线程局部存储
6.3.5. 使用动态链接器
7. 使用 ARM 库管理程序
7.1. 关于库
7.2. 库搜索、选择和扫描
7.2.1. 搜索 ARM 库
7.2.2. 搜索用户库
7.2.3. 扫描库
7.3. ARM 库管理程序
7.3.1. 库管理程序命令行选项
7.3.2. 排序命令行选项
7.3.3. armar 使用示例
8. 使用 fromelf
8.1. 关于 fromelf
8.1.1. 映像结构
8.1.2. 排序命令行选项
8.2. fromelf 命令语法
8.2.1. --base n
8.2.2. code_output_format
8.2.3. --continue_on_error
8.2.4. --decode_build_attributes
8.2.5. --debugonly
8.2.6. --diag_style arm|ide|gnu
8.2.7. --diag_suppress taglist
8.2.8. --dump_build_attributes
8.2.9. --expandarrays
8.2.10. --extract_build_attributes
8.2.11. --fieldoffsets
8.2.12. --help
8.2.13. input_file
8.2.14. memory_config
8.2.15. --no_debug
8.2.16. --no_linkview
8.2.17. --no_symbolversions
8.2.18. --output output_file
8.2.19. --privacy
8.2.20. Project template options
8.2.21. --select select_options
8.2.22. --show_cmdline
8.2.23. --strip option [, option]
8.2.24. --text
8.2.25. --vsn
8.3. fromelf 使用示例
8.3.1. 生成无格式二进制文件
8.3.2. 反汇编
8.3.3. 以汇编语言 EQU 方式列出字段偏移
8.3.4. 列出静态数据地址
8.3.5. 将调试转换为非调试

所有权声明

带有 ®™ 标记的词语和徽标是 ARM 公司的注册商标或商标。 此处提及的其他品牌和名称可能是其相关所有者的商标。

除非事先得到版权所有人的书面许可,否则不得以任何形式修改或复制本文档包含的部分或全部信息以及产品说明。

本文档描述的产品还将不断发展和完善。 ARM 公司将如实提供本文档所述产品的所有特性及其使用方法。 但是,所有暗示或明示的担保,包括但不限于对特定用途适销性或适用性的担保,均不包括在内。

本文档的目的仅在于帮助读者使用产品。 对由于使用本文档任何信息出现的遗漏、损坏或错误使用产品造成的任何损失,ARM 公司概不负责。

使用 ARM 一词时,它表示 ARM 或其任何相应的子公司。

保密状态

本文档的内容是非保密的。 根据 ARM 与 ARM 将本文档交予的参与方的协议条款,使用、复制和公开本文档内容的权利可能会受到许可限制的制约。

产品状态

本文档的信息是开发的产品的最新信息。

Revision History
Revision A 2002 年 8 月 1.2 版
Revision B 2003 年 1 月 2.0 版
Revision C 2003 年 9 月 RVDS v2.0 的 2.0.1 版
Revision D 2004 年 1 月 RVDS v2.1 的 2.1
Revision E 2004 年 12 月 RVDS v2.2 的 2.2 版
Revision F 2005 年 5 月 RVDS v2.2 SP1 的 2.2 版
Revision G 2006 年 3 月 RVDS v3.0 的 3.0 版
Revision H 2007 年 3 月 RVDS v3.1 的 3.1 版
Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0206HC
Non-Confidential