打印

请教一个关于arm-linux-ld entry的问题

[复制链接]
2429|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weicz|  楼主 | 2011-3-24 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在linux下,编译了一个简单的arm程序写makefile时调用连接文件led.lds,内容如下
OUTPUT_ARCH(arm)
ENTRY(mystart)
SECTIONS
{

. = 0x32000000;

.text : { *(.text) }

.data : { *(.data) }

.bss : {*(.bss) }
}
mystart是我在init.s汇编文件中定义的标号,也是程序的入口,想把程序入口设置为0x32000000,如上述文件所示
可是编译连接出来的2进制文件,经过反汇编,看到0x32000000地址处是LedMain函数,LedMain是我在main.c中编写的主函数,而init.s中的标号mystart被连接在了后面的0x32000118处.

如果我将上述lds文件修改为(去掉了OUTPUT_ARCH和ENTRY)

SECTIONS
{

. = 0x32000000;

.text : { init.o main.o }

.data : { *(.data) }

.bss : {*(.bss) }
}
连接的地址就正确了.如果将.text : { init.o main.o }改为.text : { main.o init.o}仍然有上边的问题,所以我怀疑这ENTRY命令根本没有起作用,而是根据在.text里定义目标文件的顺序来的.

所以想请教大侠这个ENTRY到底怎么起作用,如果我一文件中有多个函数或section的时候,怎么指定入口地址,万分感谢!!!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

69

帖子

0

粉丝