c - 如何在 platformio 上使用本地库构建项目?
问题描述
问题:无法理解为什么项目没有使用本地库构建。
在构建项目时,我的终端出现以下错误:
Linking .pio/build/genericSTM32F103C8/firmware.elf
.pio/build/genericSTM32F103C8/src/main.o: In function `main':
main.c:(.text.startup.main+0x2): undefined reference to `clock_setup'
collect2: error: ld returned 1 exit status
*** [.pio/build/genericSTM32F103C8/firmware.elf] Error 1
我的项目树如下所示:
根据 platformio lib 自述文件,我在 src/main.c 中添加了以下内容
#include <clock.h>
我对平台 io 的配置是:
[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = libopencm3
debug_tool = custom
debug_server =
$PLATFORMIO_CORE_DIR/packages/tool-openocd/bin/openocd
-f
/usr/local/share/openocd/scripts/interface/stlink-v2.cfg
-f
$PLATFORMIO_CORE_DIR/packages/tool-openocd/scripts/target/stm32f1x.cfg
lib_ldf_mode = chain+
clock.h 包含:
#include <libopencm3/stm32/rcc.h>
BEGIN_DECLS
static void clock_setup(void);
END_DECLS
clock.c 包含:
#include <libopencm3/stm32/rcc.h>
#include "clock.h"
static void clock_setup(void)
{
/* Extenal 16 MHz clock set to 72MHz using PLL */
rcc_clock_setup_in_hse_16mhz_out_72mhz();
/* Enable clock for DI DO ADC UART */
rcc_periph_clock_enable(RCC_GPIOA);
rcc_periph_clock_enable(RCC_GPIOB);
rcc_periph_clock_enable(RCC_GPIOC);
/* Enable AFIO clock. */
rcc_periph_clock_enable(RCC_AFIO);
/* Enable Timer clock. */
rcc_periph_clock_enable(RCC_TIM3);
rcc_periph_clock_enable(RCC_TIM4);
/* Enable UART clock. */
rcc_periph_clock_enable(RCC_USART1);
rcc_periph_clock_enable(RCC_USART2);
/* Enable I2C clock. */
rcc_periph_clock_enable(RCC_I2C2);
/* Enable SPI2 clock. */
rcc_periph_clock_enable(RCC_SPI2);
}
解决方案
我当前的 lib 文件夹看起来像这样,并且 platformio 的 LDF 现在可以找到我的本地库。
├── clock │ ├── clock.c │ └── clock.h ├── di │ ├── di.c │ └── di.h ├── do │ ├── do.c │ └── do.h ├── i2c │ ├── adc_i2c.c │ └── adc_i2c.h ├── spi │ ├── spi.c │ └── spi.h └── uart ├── debug_uart.c ├── debug_uart.h ├── display_uart.c ├── display_uart.h ├── modbus_uart.c └── modbus_uart.h
推荐阅读
- python - 在 python 中使用 glob 剪切出一系列文件
- async-await - 如何让 $beforeValidate 等到异步操作完成
- vue.js - 强制更改 vue js/css 资产哈希(指纹)
- python - matplotlib 中有没有办法检查当前显示的轴区域中的艺术家?
- reactjs - 如何将 react-native-vector-icons 与 react-native-web 一起使用?
- r - 使用 R - html 内容进行网页抓取
- mysql - 将两个变量传递给 Laravel 中的方法
- angular - Angular 8 单元测试指令,其中包括 setTimeout
- java - 在 Android Studio 上使用 itemtouchhelper.callback 拖放时降低滚动速度
- java - 更改 Integer 类对象的值