Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526588
  • 博文数量: 235
  • 博客积分: 1209
  • 博客等级: 少尉
  • 技术积分: 1417
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-19 19:59
文章分类

全部博文(235)

文章存档

2012年(107)

2011年(128)

分类:

2011-11-19 20:50:26

今天在编译vxWorks的bootrom时,发现一个这样的问题:
我们使用-e命令来指定某些程序的入口地址,使用-Ttext指定程序的text段加载到内存后的位置。
有一种情形如下:
    src文件A.c中:
包含函数a(),b(),c()的定义,存放于A.c中的顺序为a(),b(),c();

    此时,若我们需要指定b()函数为此编译链接过程生成的程序的入口点,而在makefile中使用-e命令,是无法实现的,根据我反汇编并使用在线调试器的单步运行结果来看,程序会将函数a()作为程序入口点。

    此问题非常隐蔽,特别在某些时候,我们为了减少链接文件个数,直接在A.c文件中使用include"B.c",于是,当程序被加载进内存,你会惊奇的发现B.c中第一个函数居然成了程序的入口点。
阅读(571) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~