gcc - 试图理解链接描述文件中的 (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 库,它链接类似的函数memcpy
并memset
包含许多算术函数。
谁能回答我的一些问题?
我假设当我能够编译(和链接)删除所有这些库的程序时,我的代码不依赖于这些函数中的任何一个。这是正确的,对吧?或者如果没有这些库,引擎盖下是否有一些东西没有得到适当的优化?
#include<stdlib.h>
当我还可以添加(例如)或其他标准 C 头文件以包含功能时,为什么我需要在链接器级别添加库?这背后的一般故事是什么?什么时候需要这种包含库的方式?
解决方案
推荐阅读
- typescript - 三重点运算符和 & 运算符对类型的解释
- python - Python memoryView 和 mmap 正在重复读取和写入
- javascript - 将数组推入firebase中的子位置?
- python - Formset 无效但“保存”保存父模型并关闭页面
- file - 用汇编语言定义文件名
- orchardcms - 从 Orchard CMS 1.10.1 中的视图访问内容字段
- c# - “数据为 Null。无法对 Null 值调用此方法或属性。” 在日期时间
- c - C中有什么方法可以知道有多少进程具有相同的pgid?
- javascript - 在另一个单元格悬停时更改表格单元格中的 DIV 类
- javascript - 如何在 pug 中将“li”元素动态附加到其父“ul”