icfans

如何解决link error: L6478E

0
阅读(1608)

[DESCRIPTION]
有时候利用RVCT编译工程时,会遇到link error: Error: L6478E: Maximum number of veneer
generation passes (10) exceeded, please try increasing with option --
max_veneer_passes=number.
一般情况下,有些模块非常大,导致跳转时需要veneer。
当BL跳转时超出如下范围,就会产生veneer:
32MB for ARM, 16MB for Thumb-2, and 4MB for thumb.
所以,如果有些模块非常大,并且编译时被自动优化为Thumb code(可以查看lis文件),那么
就有可能产生L6478E的link error。
一般解决方法可以将这些模块强制编译成ARM code.
[KEYWORDS]来自半导体社区
L6478E --max_veneer_passes
[SOLUTION]
在comp.mak开头处添加如下代码(用红色标注):
ifeq ($(strip $(COMPONENT)), XXX)
CFLAGS += --arm
CPLUSFLAGS += --arm
AFLAGS += --arm
endif
其中XXX是对应模块的名字。