使用Green Hills编译器链接静态库和标头

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (310)

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

在flags中将文件路径添加到标题中:

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_Sys_HsyncActLevelSet(r_vdce_api.o)

提问于
用户回答回答于

基本上由于其他源文件未编译而出现错误,因为缺少标头而编译器没有抛出任何关于此的通知。因此,当所有目标文件编译错误都消失了。添加库的正确方法是像我一样添加路径或使用Ian Abbot提到的-lname。

所属标签

可能回答问题的人

  • 不吃貓的鱼oo

    5 粉丝466 提问6 回答
  • Richel

    8 粉丝0 提问4 回答
  • 发条丶魔灵1

    6 粉丝525 提问3 回答
  • 人生的旅途

    10 粉丝484 提问3 回答

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励