Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28714
  • 博文数量: 8
  • 博客积分: 1446
  • 博客等级: 上尉
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-19 13:01
文章分类
文章存档

2011年(1)

2010年(7)

我的朋友

分类:

2011-11-16 23:11:45

今天在编译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中第一个函数居然成了程序的入口点。
阅读(2069) | 评论(1) | 转发(1) |
0

上一篇:vmware网络配置

下一篇:没有了

给主人留下些什么吧!~~

十七岁的回忆2011-11-19 20:50:48

哈哈,学习了