C中的Cell SPU错误

时间:2011-05-15 17:53:22

标签: c cell spu

编译SPU程序时,出现以下编译错误:

(.text+0x28): relocation truncated to fit: SPU_ADDR18 against symbol `_end' defined in *ABS* section in spu

这是什么意思?

错误发生在我最初加入之后:

#define CACHE_NAME MY_CACHE

#define CACHED_TYPE double

#define CACHELINE_LOG2SIZE 11

#define CACHE_LOG2NWAY 2

#define CACHE_LOG2NSETS 4

#include <cache-api.h>

2 个答案:

答案 0 :(得分:1)

错误意味着:

  • 对象使用重定位模式SPU_ADDR18引用符号'_end'

  • 符号'_end'的实际地址对于所使用的参考模式来说太大了。

_end是传统上在代码和数据段末​​尾定义的符号。因此,最有可能的是,您拥有的代码和静态数据多于SPU支持。 (SPU支持256Kb,即18位地址,所以我猜重定位类型SPU_ADDR18是最灵活的一种)。

答案 1 :(得分:0)

错误意味着您正在构建的elf可执行文件不适合SPU内存;可能是因为cache-api.h标头定义了一些静态/全局变量。请注意,您的可执行文件不能使用超过251Kb的内存(其中一部分可能是作业内核,代码和数据的一部分)。