对于一个工程的结构理解

来源:互联网 发布:可以马赛克视频软件 编辑:程序博客网 时间:2024/06/14 16:52
这里只简单说说Linux下对ARM11的情况
一般最基本的有三个部分 .c/.S    .lds    makefile
这里面.c/.S是源文件,就是我们的想法写在这里面,不一定只有一个,可以有很多个
int main()
{
#ifdef MMU_ON
    mmu_init();
#endif  
 
    led_init();
    button_init();
    init_irq();
    led_on();
    
    while(1);
    
    return 0;   
}




.lds是脚本文件,用来链接几个源文件编译产生的.o文件,产生可执行的.elf文件
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS {
. = 0x50008000;
. = ALIGN(4);
.text :
{
start.o (.text)
*(.text)
}

. = ALIGN(4);
.data : 
{
*(.data)
}
. = ALIGN(4);
bss_start = .;
.bss : 
{
*(.bss) 
}
bss_end = .;
}



makefile对编译的方便化,在Linux里面就相当于是Windows里面的IDE集成开发环境
这里写上一些规则,把文件怎么处理,在一个源文件里面不需要写上所有函数,可以通过makefile把.o问价链接起来之后再调用,这样每个函数都可以自己写成一个.c/.S文件了
all: start.o mem.o main.o mmu.o led.o button.ointerrupt.o
arm-linux-ld -Tgboot.lds -o gboot.elf $^
arm-linux-objcopy -O binary gboot.elf gboot.bin
%.o : %.S
arm-linux-gcc -g -c $^
%.o : %.c
arm-linux-gcc -g -c $^
.PHONY: clean
clean:
rm *.o *.elf *.bin

原创粉丝点击