Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1694294
  • 博文数量: 511
  • 博客积分: 967
  • 博客等级: 准尉
  • 技术积分: 2560
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-06 14:19
文章分类

全部博文(511)

文章存档

2016年(11)

2015年(61)

2014年(257)

2013年(63)

2012年(119)

分类: Android平台

2014-03-06 19:44:08

zhihua.xie@droid08-sz:/mnt/nfsroot/zhihua.xie/led_on/led_on_c$  // 包含文件,微云:led_on_c.tar.gz
crt0.S   led_on_c.c   link.ld.S  Makefile
--------------------------------------------------------------------------------------------------------------------------
Makefile:
led_on_c.bin : crt0.S  led_on_c.c led_on.lds
        arm-linux-gnueabihf-gcc -g -c -o crt0.o crt0.S
        arm-linux-gnueabihf-gcc -g -c -o led_on_c.o led_on_c.c
        arm-linux-gnueabihf-ld -T link.ld.S -g  crt0.o led_on_c.o -o led_on_c_elf -Map startup.map
        arm-linux-gnueabihf-objcopy -O binary -S led_on_c_elf led_on_c.bin
        arm-linux-gnueabihf-objdump -D -m arm  led_on_c_elf > led_on_c.dis
clean:
        rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o startup.map
---------------------------------------------------------------------------------------------------------------------------------------------
link.ld.S

OUTPUT_FORMAT(elf32-littlearm)
OUTPUT_ARCH(arm)
ENTRY(_start)


SECTIONS
{
        . = 0x30800000;
        . = ALIGN(4);
        .text   :
        {
        crt0.o(.text)
        *(.text)
        }
        . = ALIGN(4);
        .data   :{led_on_c.o(.data)}
        . = ALIGN(4);
        .bss    :{led_on_c.o(.bss)}
}
-----------------------------------------------------------------------------------------------------------------
i.mx6 SDK:

$(APP_ELF): $(SUBDIRS) $(app_objs) $(the_ld_file) $(LIBRARIES) $(APP_LIBS)

 @$(call printmessage,link,Linking, $(APP_NAME))

 $(at)$(LD) -Bstatic -nostartfiles -nostdlib $(LDFLAGS) \

       -T $(the_ld_file) \

       $(LDINC) \

       --start-group \

       $(app_objs) \

       $(LIBRARIES) \

       $(APP_LIBS) \

       $(LDADD) \

       --end-group \

       -o $@ \

       -Map $(app_map) --cref
$(at)$(OBJCOPY) --gap-fill 0x00 -I elf32-little -O binary $@ $(app_bin)

 @echo "Output ELF:" ; echo " $(APP_ELF)"

 @echo "Output binary:" ; echo " $(app_bin)"
---------------------------------------------------------------------------------------------------------------------
ld –o test –Ttext 0x0 –e main test.o

在通过gcc/g++间接调用链接程序ld时,所有的ld选项前必须加上“-Wl,”,因为-Map是ld的选项。

所以,要让g++生成mapfile,需要增加编译参数“ -Wl,-Map,mapfile”。

例:gcc -o helloworld helloworld.c -Wl,-Map,helloworld.map 


 .text.flasheader
                0x27800000 0x71c board/embest/mx6q_marsboard/flash_header.o
 cpu/arm_cortexa8/start.o()
 *fill* 0x2780071c 0x4 00
 .text 0x27800720 0x440 cpu/arm_cortexa8/start.o
                0x27800720 _start
                0x27800760 _end_vect
                0x27800764 _armboot_start

SECTIONS
{
 . = 0x00000000;    /* 后记:这个链接起始地址实际上被-Ttest $(TEST_BASE)更新了*/

 . = ALIGN(4);
 .text  





















阅读(2410) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~