我有一个静态库.a,其中提供了几个头文件。我想使用Green Hills编译器将其与.o文件链接成二进制文件。 我得到的错误是:[elxr](错误#412)未解析的符号。 我试图指定提供链接器-I文件路径的头文件的路径。 但是,这似乎不起作用。
已更新代码。
# Recipe for linking
__GHSRH850_ERRALL += $(__GHSRH850_TARGETERR)
GHSRH850_LIB = SRC\MCU\DROME\RGL\libd1mx_rh850_ghs.a
$(GHSRH850_TARGETEMU): $(__GHSRH850_OBJS) $(GHSRH850_LSCRIPT) $(GHSRH850_LIB) \
$(CORE_MAKPREREQS) | __GHSRH850_DIRS
$(call CORE_REPORTFILE,Linking,$(@F))
$(eval __GHSRH850_ERRDONE += $(__GHSRH850_TARGETERR))
$(GHSRH850_LD) \
$(GHSRH850_LSCRIPT) \
-o $@ \
$(GHSRH850_LIB) \
$(__GHSRH850_OBJS) \
$(GHSRH850_LFLAGS) \
> $(__GHSRH850_TARGETERR)
make文件非常大,因此我无法将其全部放在此处。基本上,库添加有: GHSRH850_LIB = file \ path \ to \ libname.a
在标志中,文件头添加了以下路径:
GHSRH850_LFLAGS + = -I file \ path \ to \ headers
其他描述是:
GHSRH850_LFLAGS-链接器标志
GHSRH850_LSCRIPT-链接描述文件
__ GHSRH850_OBJS-目标文件列表
使用ccrh850.exe的编译器。
错误代码:
[elxr] (error #412) unresolved symbols: 35
_R_UTIL_DHD_Init from drglgmm_dhd.o
_R_UTIL_DHD_Config from drglgmm_dhd.o
_R_DEV_SQRTF from libd1mx_rh850_ghs.a(r_drw2d_main.o)
libd1mx_rh850_ghs.a(r_vdce_api.o)的_R_VDCE_Sys_HsyncActLevelSet
答案 0 :(得分:0)
谢谢大家的快速回答。问题解决了。 基本上由于未编译其他源文件而出现错误,是因为缺少标头,并且编译器未对此发出任何通知。因此,当所有目标文件的编译错误都消失了时。添加库的正确方法是像我一样添加路径,或者使用Ian Abbot提到的-lname。