Linux Mint下VSCode+PlatformIO编译报错:No space left on device
问题场景与报错信息
我正在使用Linux Mint 21.1,搭配VSCode及PlatformIO扩展,项目文件夹位于通过Samba访问的服务器上。该配置在Windows系统中修改一处注册表后可正常运行,但编译代码时出现如下报错:
Compiling .pio/build/ESP32/lib1d9/WiFi/WiFiSTA.cpp.o /tmp/ccE4gY8E.s: Assembler messages: /tmp/ccE4gY8E.s:3187: Fatal error: can't write 4 bytes to section .literal._ZN11EEPROMClassC2Ev of .pio/build/ESP32/libed2/EEPROM/EEPROM.cpp.o: 'Operation not supported' /tmp/ccE4gY8E.s:3187: Fatal error: can't close .pio/build/ESP32/libed2/EEPROM/EEPROM.cpp.o: No space left on device *** [.pio/build/ESP32/libed2/EEPROM/EEPROM.cpp.o] Error 1 /tmp/cczanPYc.s: Assembler messages: /tmp/cczanPYc.s:292: Fatal error: can't write 4 bytes to section .literal._ZN9WiFiClass9printDiagER5Print of .pio/build/ESP32/lib1d9/WiFi/WiFi.cpp.o: 'Operation not supported' /tmp/cczanPYc.s:292: Fatal error: can't close .pio/build/ESP32/lib1d9/WiFi/WiFi.cpp.o: No space left on device *** [.pio/build/ESP32/lib1d9/WiFi/WiFi.cpp.o] Error 1 /tmp/cc6b9P0Z.s: Assembler messages: /tmp/cc6b9P0Z.s:1674: Fatal error: can't write 4 bytes to section .literal._Z18wifi_softap_configP13wifi_config_tPKcS2_h16wifi_auth_mode_thhbt of .pio/build/ESP32/lib1d9/WiFi/WiFiAP.cpp.o: 'Operation not supported' /tmp/cc6b9P0Z.s:1674: Fatal error: can't close .pio/build/ESP32/lib1d9/WiFi/WiFiAP.cpp.o: No space left on device *** [.pio/build/ESP32/lib1d9/WiFi/WiFiAP.cpp.o] Error 1 /tmp/cc5AEBw4.s: Assembler messages: /tmp/cc5AEBw4.s:1583: Fatal error: can't write 4 bytes to section .literal._ZN9WiFiMultiD2Ev of .pio/build/ESP32/lib1d9/WiFi/WiFiMulti.cpp.o: 'Operation not supported' /tmp/cc5AEBw4.s:1583: Fatal error: can't close .pio/build/ESP32/lib1d9/WiFi/WiFiMulti.cpp.o: No space left on device *** [.pio/build/ESP32/lib1d9/WiFi/WiFiMulti.cpp.o] Error 1 /tmp/ccPCAQ20.s: Assembler messages: /tmp/ccPCAQ20.s:5420: Fatal error: can't write 4 bytes to section .literal._ZN10WiFiClient7connectE9IPAddresst of .pio/build/ESP32/lib1d9/WiFi/WiFiClient.cpp.o: 'No space left on device' /home/rj/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/as: BFD (crosstool-NG esp-2021r2-patch5) 2.35.1.20201223 assertion fail /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/binutils/bfd/elf.c:3163
服务器和我的笔记本电脑都应该有充足的存储空间,但不清楚报错中提到的空间不足的目录是哪个,也不知道如何解决该问题,本人在Linux和编程方面经验较少,寻求解决建议。
解决建议
1. 排查本地/tmp目录空间
报错里的临时编译文件都存储在/tmp目录,先检查该目录剩余空间:
- 打开终端执行命令:
df -h /tmp - 若空间不足,可先重启系统自动清理临时文件;也可手动清理无用文件:
sudo rm -rf /tmp/*(注意不要误删正在使用的文件) - 若
/tmp频繁空间不足,可修改系统配置扩大临时分区,或指定PlatformIO临时目录到其他有充足空间的本地路径。
2. 将PlatformIO构建目录移至本地磁盘
项目在Samba共享目录上,编译时的构建文件写入共享目录可能触发权限或兼容性问题,建议将构建目录改到本地:
- 编辑项目根目录的
platformio.ini,添加一行配置:build_dir = /home/你的用户名/本地路径/build(替换为你本地有空间的路径) - 或修改全局配置:打开PlatformIO Home → Settings → Platforms → Build Path,设置为本地路径。
3. 调整Samba挂载参数
报错中的Operation not supported大概率是Samba共享不支持字节范围锁导致的,需修改挂载参数:
- 查看当前挂载命令,确保添加
nobrl参数,完整挂载命令示例:sudo mount -t cifs //服务器地址/共享目录 /本地挂载点 -o username=你的用户名,password=你的密码,nobrl - 若未添加该参数,先卸载共享:
sudo umount /本地挂载点,再重新挂载并加上nobrl参数。
4. 验证实际磁盘空间
再次确认本地和服务器的磁盘剩余空间:
- 本地磁盘检查:
df -h - 服务器端(若能登录):
df -h,重点查看共享目录所在分区的剩余空间。
5. 清理PlatformIO缓存
缓存文件可能占用空间或引发异常,清理缓存:
- 打开PlatformIO Home,找到对应项目,点击
Clean按钮 - 或手动删除项目下的
.pio目录,之后重新编译
内容的提问来源于stack exchange,提问作者Runar Jørgensen
相关产品推荐
相关产品推荐

