如何修复 PlatformIO multiple definition of `WiFi' error
问题:
编译 PlatformIO 固件时,你看到类似这样的错误消息
linker_multiple_definition_error.txt
Linking .pio/build/d1_mini_lite/firmware.elf
/home/uli/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld: .pio/build/d1_mini_lite/libbc0/libWiFi.a(WiFi.cpp.o):(.bss.WiFi+0x0): multiple definition of `WiFi'; .pio/build/d1_mini_lite/libd39/libESP8266WiFi.a(ESP8266WiFi.cpp.o):(.bss.WiFi+0x0): first defined here
collect2: error: ld returned 1 exit status
*** [.pio/build/d1_mini_lite/firmware.elf] Error 1解决方案
将 platformio.ini 中 lib_deps 部分的 WiFi 移到列表顶部。修复前:
platformio_before.ini
lib_deps =
ESP Async Webserver@1.2.3
ArduinoJSON@6.17.2
WiFi修复后:
platformio_after.ini
lib_deps =
WiFi
ESP Async Webserver@1.2.3
ArduinoJSON@6.17.2现在你需要从项目目录中完全删除 .pio 文件夹:
remove_pio_folder.sh
rm -rf .pio之后,重新编译你的固件。
修复问题后完整的 platformio.ini 示例:
platformio_complete_example.ini
[env:d1_mini_lite]
platform = espressif8266
board = d1_mini_lite
framework = arduino
monitor_speed = 115200
lib_deps =
WiFi
ESP Async Webserver@1.2.3
ArduinoJSON@6.17.2Check out similar posts by category:
Arduino, Electronics, PlatformIO
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow