link 带有 headers 和 Green Hills 编译器的静态库
link static library with headers with Green Hills compiler
我有一个静态库 .a,其中提供了几个 header 文件。我想 link 使用 Green hills 编译器将它与 .o 文件转换为二进制文件。
我得到的错误是:
[elxr] (error #412) unresolved symbols.
我正在尝试指定 header 文件的路径,提供 -I filepath
给 linker.
然而,这似乎不起作用。
已更新代码。
# 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
在标志中将文件路径添加到 headers 中:
GHSRH850_LFLAGS += -I file\path\to\headers
其他描述为:
GHSRH850_LFLAGS
- 链接器标志
GHSRH850_LSCRIPT
- 链接脚本文件
__GHSRH850_OBJS
- Object 文件列表
使用的编译器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)
感谢大家的快速回答。问题解决了。
基本上错误是由于其他源文件没有编译,因为缺少 headers 而编译器没有抛出任何通知。因此,当所有 object 文件编译错误都消失了。添加库的正确方法是像我一样添加路径或使用 Ian Abbot 提到的 -lname。
我有一个静态库 .a,其中提供了几个 header 文件。我想 link 使用 Green hills 编译器将它与 .o 文件转换为二进制文件。 我得到的错误是:
[elxr] (error #412) unresolved symbols.
我正在尝试指定 header 文件的路径,提供 -I filepath
给 linker.
然而,这似乎不起作用。
已更新代码。
# 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
在标志中将文件路径添加到 headers 中:
GHSRH850_LFLAGS += -I file\path\to\headers
其他描述为:
GHSRH850_LFLAGS
- 链接器标志
GHSRH850_LSCRIPT
- 链接脚本文件
__GHSRH850_OBJS
- Object 文件列表
使用的编译器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)
感谢大家的快速回答。问题解决了。 基本上错误是由于其他源文件没有编译,因为缺少 headers 而编译器没有抛出任何通知。因此,当所有 object 文件编译错误都消失了。添加库的正确方法是像我一样添加路径或使用 Ian Abbot 提到的 -lname。