TQ2440 学习笔记—— 10、嵌入式编程基础知识【arm-linux-ld 选项】
2015-09-01 16:05
866 查看
(韦东山——嵌入式Linux 应用开发完全手册)
arm-linux-ld 用于将多个目标文件、库文件链接成可执行文件。
介绍 “ -T ” 选项,可以直接使用它来指定代码段、数据段、bss 段的起始地址,也可以用来指定一个链接脚本,在链接脚本中进行更复杂的地址设置。
“ -T ” 选项只用于链接Bootloader、内核等“没有底层软件支持”的软件;链接运行于操作系统之上的应用程序时,无需指定“
-T ” 选项,它们使用默认的方式进行链接。
1、直接指定代码段、数据段、bss段的起始地址
格式如下:
-Ttext
startaddr
-Tdata
startaddr
-Tbss
startaddr
其中的“ startaddr ” 分别表示代码段、数据段、bss段的起始地址,它是一个十六进制数。
例子: arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf
它表示代码段的运行地址为0x0000000, 由于没有定义数据段、bss 段的起始地址,它们被依次放在代码段的后面。
有关绝对地址的计算
Bootloader 、内核等程序刚开始执行时,他们所处的地址通常不等于运行地址。在程序的开头,先使用b、bl、mov 等“位置无关”的指令代码从Flash 等设备中复制到内存的“运行地址”去执行。
2、使用链接脚本设置地址
" $^ " 表示 “ head.o init.o interrupt.o main.o ”
arm-linux-ld -Ttimer.lds -o timer_elf $^
它使用链接脚本timer.lds 来设置可执行文件timer_elf 的地址信息,timer_elf 文件内容如下:
链接脚本的基本命令:
SECTIONS 命令:它描述了输出文件的”映射图“:输出文件中各段、各文件怎么放置。
另一个是SECTIONS 命令内部包含一个或多个段,段是链接脚本的基本单元,它表示输入文件中某个部分怎么放置。
完整的链接脚本格式如下,它的核心部分是段;
secname 和 contents 是必须的,前者用来命名这个段,后者用来确定代码中的什么部分放在这个段中。
(先记下,以后需要的话再好好看)
arm-linux-ld 用于将多个目标文件、库文件链接成可执行文件。
介绍 “ -T ” 选项,可以直接使用它来指定代码段、数据段、bss 段的起始地址,也可以用来指定一个链接脚本,在链接脚本中进行更复杂的地址设置。
“ -T ” 选项只用于链接Bootloader、内核等“没有底层软件支持”的软件;链接运行于操作系统之上的应用程序时,无需指定“
-T ” 选项,它们使用默认的方式进行链接。
1、直接指定代码段、数据段、bss段的起始地址
格式如下:
-Ttext
startaddr
-Tdata
startaddr
-Tbss
startaddr
其中的“ startaddr ” 分别表示代码段、数据段、bss段的起始地址,它是一个十六进制数。
例子: arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf
它表示代码段的运行地址为0x0000000, 由于没有定义数据段、bss 段的起始地址,它们被依次放在代码段的后面。
有关绝对地址的计算
Bootloader 、内核等程序刚开始执行时,他们所处的地址通常不等于运行地址。在程序的开头,先使用b、bl、mov 等“位置无关”的指令代码从Flash 等设备中复制到内存的“运行地址”去执行。
2、使用链接脚本设置地址
" $^ " 表示 “ head.o init.o interrupt.o main.o ”
arm-linux-ld -Ttimer.lds -o timer_elf $^
它使用链接脚本timer.lds 来设置可执行文件timer_elf 的地址信息,timer_elf 文件内容如下:
链接脚本的基本命令:
SECTIONS 命令:它描述了输出文件的”映射图“:输出文件中各段、各文件怎么放置。
另一个是SECTIONS 命令内部包含一个或多个段,段是链接脚本的基本单元,它表示输入文件中某个部分怎么放置。
完整的链接脚本格式如下,它的核心部分是段;
secname 和 contents 是必须的,前者用来命名这个段,后者用来确定代码中的什么部分放在这个段中。
(先记下,以后需要的话再好好看)
相关文章推荐
- LINUX网卡(设置千兆网卡速度及模式)
- 提升linux 低延时 高吞吐量 性能的配置
- linux系统调用分析
- linux查看cpu信息
- Centos6.5 64位系统镜像定制过程
- Linux下搭建Eclipse+Maven的Hbase开发环境
- linux下拉取文件的方法
- Linux串口编程教程(一)——基础知识介绍
- centos 6.5 安装qt5.2
- Linux常用命令大全
- Linux学习记录(8)Linux基本权限设置
- linux如何复制文件夹
- linux 剪切文件
- 查看linux文件目录的大小和文件夹包含的文件数
- Linux当前目录查找内容
- Linux 常用命令 最常用的
- Linux C下如何查看进程数
- 将linux默认python升级到2.7.4版本
- Linux 配置防火墙
- Linux 创建文件夹快捷方式 In -s