You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派Pico使用std::this_thread::sleep_for遇链接错误的解决

树莓派Pico中std::this_thread::sleep_for链接错误的修复方案

问题背景

在树莓派Pico项目中使用std::this_thread::sleep_for(10ms);后,触发链接错误,提示usleep和sleep符号未定义。尝试自定义usleep函数但不确定正确签名,纠结是要修复标准库睡眠函数的链接问题,还是只能全部替换为Pico SDK自带的sleep_us/sleep_ms。

可行修复方案

无需替换现有std::this_thread::sleep_for代码,只需添加以下适配代码,让标准库调用Pico SDK的睡眠接口:

#include <unistd.h>
#include "pico/time.h"

// 适配标准库依赖的usleep函数
int usleep(useconds_t usec) {
    sleep_us(usec);
    return 0;
}

// 适配标准库依赖的sleep函数
unsigned int sleep(unsigned int sec) {
    sleep_ms(sec * 1000);
    return 0;
}

将这段代码添加到项目任意源文件(比如main.cpp或单独的适配文件),重新编译即可解决链接错误。

完整构建输出示例

[100%] Built target pico-sdk
[100%] Building CXX object CMakeFiles/demo_project.dir/src/main.cpp.obj
[100%] Linking CXX executable demo_project.elf
Memory region Used Size Region Size %age Used
FLASH: 18704 B 2 MB 0.90%
RAM: 2328 B 256 KB 0.89%
[100%] Built target demo_project

内容的提问来源于stack exchange,提问作者David Carpenter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:13:08