linux编译map文件,最小编译-makefile 链接 map等

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值