树莓派Pico 2 W SDK中lwip/pbuf.h头文件缺失问题及解决
树莓派Pico 2 W编译时找不到lwip/pbuf.h的问题解决
已验证的解决方案
在CMakeLists.txt中添加以下链接库指令即可解决头文件找不到的问题:
target_link_libraries(${PROGRAM} pico_cyw43_arch_lwip_threadsafe_background)
问题详情
为树莓派Pico 2 W编译程序时,编译器无法识别lwip/pbuf.h头文件。已通过以下命令完整下载包含子模块的SDK:
git clone --recursive https://github.com/raspberrypi/pico-sdk.git
hello_world和blink等基础示例程序可正常编译,但在代码中加入#include "lwip/pbuf.h"后,该头文件始终无法被找到。SDK中pbuf.h的实际路径为:
$PICO_SDK_PATH/lib/btstack/3rd-party/lwip/core/src/include/lwip/pbuf.h $PICO_SDK_PATH/lib/lwip/src/include/lwip/pbuf.h
这两个路径均未被CMake自动添加到编译包含路径中。
原CMakeLists.txt内容
cmake_minimum_required(VERSION 3.13...3.27) # initialize the SDK based on PICO_SDK_PATH # note: this must happen before project() include(pico_sdk_import.cmake) project(${PROGRAM}) # initialize the Raspberry Pi Pico SDK pico_sdk_init() # Application-specific code goes below: add_executable(${PROGRAM} ${PROGRAM}.c ) # Add pico_stdlib library which aggregates commonly used features target_link_libraries(${PROGRAM} pico_stdlib) target_link_libraries(${PROGRAM} pico_cyw43_arch_none) # enable usb or uart output pico_enable_stdio_usb(${PROGRAM} 1) pico_enable_stdio_uart(${PROGRAM} 0) # create map/bin/hex/uf2 file in addition to ELF. pico_add_extra_outputs(${PROGRAM})
内容的提问来源于stack exchange,提问作者Bryan Wright
相关产品推荐
相关产品推荐

