问题:无法理解为什么项目不使用本地库进行构建。
在构建该项目时,在我的终端上会出现以下错误:
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 readme,我在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+H包含:
#include <libopencm3/stm32/rcc.h>
BEGIN_DECLS
static void clock_setup(void);
END_DECLSclock.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);
}发布于 2020-06-16 20:51:36
我当前的lib文件夹如下所示,platformio的LDF现在可以找到我的本地库了。
├──clock│├──clock.c│└──clock.h├──di│├──di.c│└──di.h├──do│├──do.c│└──do.h├──├──│├──adc_i2c.c│└──├──spi├──spi.c├──spi├──spi.美国联合航空公司( uart debug_uart.h debug_uart.h├──display_uart.c├──display_uart.h├──modbus_uart.c└──modbus_uart.h
)
https://stackoverflow.com/questions/62378122
复制相似问题