使用Green Hills编译器将静态库与标头链接起来

时间:2019-03-14 14:36:24

标签: c greenhills

我有一个静态库.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

1 个答案:

答案 0 :(得分:0)

谢谢大家的快速回答。问题解决了。 基本上由于未编译其他源文件而出现错误,是因为缺少标头,并且编译器未对此发出任何通知。因此,当所有目标文件的编译错误都消失了时。添加库的正确方法是像我一样添加路径,或者使用Ian Abbot提到的-lname。