avr-gcc 库存储在哪里?

分享于2023年02月15日 avr avr-gcc avrdude c microcontroller 问答
【问题标题】:Where are avr-gcc libraries stored?avr-gcc 库存储在哪里?
【发布时间】:2023-02-14 12:17:23
【问题描述】:

我试图在 avr 中找到与 #include 头文件相关的 .c 文件。

我想看看 avr-gcc 库中定义的一些标准库,特别是 <avr/io.h> 中包含的 PORT 定义。我在 /usr/lib/avr/include/avr 中搜索了库并找到了头文件,但是我要查找的是 .c 文件。这个文件存在吗?如果是这样,我在哪里可以找到它?如果不是,头文件引用的是什么?

  • 您为什么不查看头文件以在正确的方向上开始搜索?

【解决方案1】:

编译器提供的库是存储在静态库中的预编译目标代码。在 gcc 中,库通常使用扩展名 .a(出于主要历史原因用于“存档”)和前缀“lib”。

在构建时,链接器将搜索库档案以查找解析引用库符号所需的目标代码模块。它提取所需的模块并将它们链接到正在构建的二进制映像。

在 gcc 中,库 libXXX.a 通常使用命令行开关 -lXXX 链接 - 因此 libXXX.a 命名约定在这种情况下很重要。因此,例如标准 C 库 libc.a 看起来由开关 -lc 链接。

因此,为了回答您的问题,编译器提供的库通常没有 .c 文件,工具链随附。该库甚至不需要用 C 语言编写。

也就是说,作为开源文件,源文件(.c 或其他)可以从各种库的存储库中获得。例如,对于标准 C 库: https://www.nongnu.org/avr-libc/

对于其他 AVR 架构和 I/O 支持库,您可以检查相关的头文件或文档。头文件通常会有一个带有项目 URL 的样板注释。

【讨论】: