码迷,mamicode.com
首页 > 其他好文 > 详细

随想录(简单的链接文件)

时间:2015-05-31 23:20:31      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:


【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】 


    在嵌入式开发中,除了汇编文件、c文件和Makfile之外,link文件是少不了的。汇编文件一般是cpu上电开始执行的code,当然有时候中断、mmu和cache、spinlock的部分也需要汇编完成;c文件构成了嵌入式开发的主要内容,无论是kernel、driver、net,还是上层app一般都是c来完成的,当然现在java完成的也多,这不属于今天讨论的范围;Makefile定义了代码的编译规则;而link file限制了elf文件中各个section的位置布局。一般的link文件是这样的,

OUTPUT_FORMAT("elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(start)
SECTIONS {
    . = 0x7c00;

    .entry : {
		*bootasm.S.o*(.text .rodata .data)	
    }

    .text : {
        *(.text)
    }
    .data : {
        *(.data)
    }
    .bss : {
        *(.bss)
    }
    /DISCARD/ : {
        *(.eh_*)
    }
}

    这其中,rodata表示只读数据的部分,比如说char* p = "hello\n"等数据;一般的function代码最后都被放进了text段;data是指那些有初始数值的全局数据,但不是只读数据;bss是指初始化为0的全局数据;当然,此时还应该有一段stack数据,但是sp的数据,也就是堆栈的指针一般是在汇编文件中才开始设定的,只要不和其他的段打架就可以了。




随想录(简单的链接文件)

标签:

原文地址:http://blog.csdn.net/feixiaoxing/article/details/46292579

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!