1

我有一个静态库 .a 提供了几个头文件。我想使用 Green hills 编译器将它与 .o 文件链接成二进制文件。我得到的错误是:

[elxr](错误 #412)未解析的符号。

我正在尝试指定提供-I filepath给链接器的头文件的路径。

但是,这似乎不起作用。

用代码更新。

# 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)
_R_VDCE_Sys_HsyncActLevelSet    from libd1mx_rh850_ghs.a(r_vdce_api.o)
4

1 回答 1

0

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

于 2019-03-24T18:52:45.577 回答