首页 > 解决方案 > 试图理解链接描述文件中的 (GROUP)

问题描述

我正在尝试在 VScode/platformIO 中为 NXP 芯片创建一个库。我认为这将是一个相当直接的操作(将源、头文件、链接器脚本和启动文件从生成的项目复制到我自己的 VScode/platformIO 库中)。

但是我得到了几个链接器错误

c:/users/baprins/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none -eabi/bin/ld.exe: 找不到 libcr_newlib_semihost.a c:/users/baprins/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/ v7e-m\crti.o:在函数_init'c _init': (.init+0x0): multiple definition of :/users/baprins/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e -m/crti.o:(.init+0x0):这里首先定义c:/users/baprins/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2。 1/thumb/v7e-m\crti.o:在函数中_fini': (.fini+0x0): multiple definition of _fini' c:/users/baprins/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m/crti.o:(.fini +0x0): 首先在这里定义 c:/users/baprins/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/thumb/v7e-m\crtbegin。 o:(.data+0x0): `__dso_handle' 的多重定义
c:/users/baprins/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/7.2.1/ thumb/v7e-m/crtbegin.o:(.data+0x0): 首先在这里定义 collect2.exe: 错误: ld 返回 1 退出状态 *** [.pio\build\mimxrt1020_evk\firmware.elf] 错误 1

它们来自链接描述文件的这一部分

GROUP (
  "libgcc.a"
  "libc_nano.a"
  "libstdc++_nano.a"
  "libm.a"
  "libcr_newlib_semihost.a"
  "crti.o"
  "crtn.o"
  "crtbegin.o"
  "crtend.o"
)

这对我来说是新的。到目前为止,在我所做的(也许太简单了?)项目中,我从来不需要在链接描述文件中列出“档案”。

例如,我搜索了第一个(libgcc)。我了解到它是一个 gcc 库,它链接类似的函数memcpymemset包含许多算术函数。

谁能回答我的一些问题?

标签: gccarm

解决方案


推荐阅读