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


【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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的数据,也就是堆栈的指针一般是在汇编文件中才开始设定的,只要不和其他的段打架就可以了。




你可能感兴趣的:(随想录(简单的链接文件))