十.链接器脚本

来源:互联网 发布:万方数据库客户端 编辑:程序博客网 时间:2024/06/08 06:39
1.裸机。内核,驱动,u-boot都会用到,地位重要。控制可执行程序的生成过程
2.段:
(1)一个可执行程序包含:代码段,数据段(已初始化),BSS段(未初始化)
(2)脚本中必然包含与上述段相关的信息
(3)固定格式:
     SECTIONS{
               .text   :
               {
                    *(.text)
               }

               .data   :
               {
                    *(.data)
               }

               .bss    :
               {
               *(.bss)
               }
               
     }
注意一定要使用tab键

3.起始链接地址:在SECTIONS的开始处加上:
. = 起始地址;(注意有分号和空格)
.:表示当前位置
4.对齐设置:
ARM处理器访问内存是以四字节的方式访问,所以把一些数据按照四字节对齐能提高访问效率。
四字节对齐:存放起始地址能被4整除
有些情况,在当前地址是无法满足四字节对齐的,所以要在链接脚本里面强行对齐:
. =  ALIGN(4);
那样就会自动调整相应段向后移动合适的长度满足对齐要求

5.变量:
bss_start = .;将当前地址赋值给bss_start,不用事先申明变量类型

6.设置代码段首文件:
保证初始化相关的代码存放在程序的最开始
                 .text   :
               {
                    start.o(.text)
                    *(.text)
               }
上述代码实现将start.o一定存放在代码段的开始部分




0 0
原创粉丝点击