Error: L6218E: Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o).错误的解决办法
来源:互联网 发布:淘宝课程学习 编辑:程序博客网 时间:2024/04/29 17:15
今天编译MTK,在模拟器上可以编译、链接通过,而在arm平台可以编辑通过但是链接时始终出现这个错误,经过排查和参考网上的资料,可尝试以下方式解决:
(转)恰好自己也遇到了这个问题 :
http://hi.baidu.com/pisvia/blog/item/04d61bd8bedc9e3032fa1ca7.html
昨天遇到一个十分麻烦的问题,我把MTK编译时遇到这样的错误:
Error : L6218E: Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o).
Not enough information to produce a SYMDEFs file.
而没有这三个:
Not enough information to list image symbols.
Not enough information to list the image map.
Not enough information to list the image sizes and/or totals.
Not enough information to list the image map.
Not enough information to list the image sizes and/or totals.
网上只有两种解释,是这样:
1. reimplement __user_initial_stackheap()
解决办法大概意思是重新装配__user_initial_stackheap()函数。
2.分配内存的时候,要分配内存的结构中使用了ARM不支持的数据类型.通常定义了结构体的指针,然后用malloc分配空间时为结构体类型指针,而ARM不支持这种数据类型,所以会有这种错误。解决办法:用typedef预定义这个结构类型,使得编译器识别这种类型。
第一种方法离我太远,应该不会涉及到;
第二种方法试过,没用,但我也大概知道方向是malloc函数的问题。
今天终于解决:
这个问题是由于代码或者Lib中调用了 C Lib的malloc或者类似于strdup,printf 这样的会调用malloc的C Lib function 引起的。MTK Platform不支持 C lib的malloc,而用 Ctrl Buffer机制代替了malloc,以便于调试memory leak问题。MTK中的Osl层有专门处理内存的函数,于是我想,我用malloc是跳过Osl层直接分配内存,这样没有经过系统处理,危险性大。所以我用系统自带的OslMalloc和OslMfree来处理内存空间,问题解决。
而我遇到的问题除了以上malloc,和printf外,还因为使用了fopen这类c lib文件操作函数,去除后可链接成功。
- Error: L6218E: Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o).错误的解决办法
- L6218E: Image$$ZI$$Limit(referred from sys_stackheap.o)错误的解决办法
- L6218E: Image$$ZI$$Limit(referred from sys_stackheap.o)错误的解决办法
- Error: L6218E: Undefined symbol GUI_TOUCH_X_ActivateX (referred from gui_touch_driveranalog.o)
- Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o)
- Error: L6218E: Undefined symbol main (referred from entry9a.o).
- Error: L6218E: Undefined symbol (referred from main.o)
- 解决Error: L6218E: Undefined symbol xxxx (referred from xxx.o)
- 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- Error: L6218E: Undefined symbol m_tmr (referred from rt_task.o) 的解决
- L6218E: Undefined symbol Image$$ER_ROM1$$RO$$Length (referred from s3c2440.o).
- LCD1.axf: Error: L6218E: Undefined symbol Image$$RO$$Base (referred from 2440.0)解决
- L6218E: Undefined symbol __ENTRY (referred from mmu.o).
- XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- ..\OBJ\ucgui_ucos.axf: Error: L6218E: Undefined symbol ff_convert (referred from ff.o). ..\OBJ\ucgui
- MDK软件中解决Error: L6218E: Undefined symbol main (referred from rtentry2.o)
- .\output\ucosII.axf: Error: L6218E: Undefined symbol OS_StrLen (referred from os_task.o).
- .\ethercat.axf: Error: L6218E: Undefined symbol appState (referred from stm32appl.o).
- 9月23号-自动装箱拆箱
- 男人要象狗 女人要象猫
- 这个C++程序 输入一组数据 为何会输出很多个结果啊~ 是有关文件处理的
- linux 和 window互访(samba)
- 20080923
- Error: L6218E: Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o).错误的解决办法
- Linux菜鸟必知必会的命令集合
- 明晰C++内存分配的五种方法的区别
- 最近给办公室写的一个网页元素获取函数,支持utf8
- 简单使用MSXML生成xml文件
- C#面向对象设计模式纵横谈 学习笔记18 Iterator迭代器模式(行为型模式)
- 睡觉啦!
- 在.NET程序中正确使用String类型
- 反射