Compilation error: collect2.exe: error: ld returned 1 exit status

Hello,
I would like to ask you for your help. I’m compiling my first code under PlatformIO, it’s a simple listing of available wifi networks. I get an error when I compile that I can’t resolve:

c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: .pio\build\pico\src\main.cpp.o: in function `setup':
main.cpp:(.text.setup+0x2a): undefined reference to `_ZN9WiFiClass5beginEPKcS1_PKh'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: C:\Users\Kevinar\.platformio\packages\framework-arduinopico\lib\libpicow-noipv6-nobtc-noble.a(cyw43_ctrl.c.obj): in function `cyw43_ensure_up':
/home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:164: undefined reference to `__wrap_cyw43_cb_tcpip_deinit'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: /home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:165: undefined reference to `__wrap_cyw43_cb_tcpip_deinit'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: C:\Users\Kevinar\.platformio\packages\framework-arduinopico\lib\libpicow-noipv6-nobtc-noble.a(cyw43_ctrl.c.obj): in function `cyw43_cb_process_async_event':
/home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:429: undefined reference to `__wrap_cyw43_cb_tcpip_set_link_up'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: /home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:350: undefined reference to `__wrap_cyw43_cb_tcpip_set_link_down'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: /home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:405: undefined reference to `__wrap_cyw43_cb_tcpip_set_link_up'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: /home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:409: undefined reference to `__wrap_cyw43_cb_tcpip_set_link_down'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: C:\Users\Kevinar\.platformio\packages\framework-arduinopico\lib\libpicow-noipv6-nobtc-noble.a(cyw43_ctrl.c.obj): in function `cyw43_wifi_set_up':
/home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:560: undefined reference to `__wrap_cyw43_cb_tcpip_deinit'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: /home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ctrl.c:561: undefined reference to `__wrap_cyw43_cb_tcpip_init'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: C:\Users\Kevinar\.platformio\packages\framework-arduinopico\lib\libpicow-noipv6-nobtc-noble.a(cyw43_ll.c.obj): in function `cyw43_ll_process_packets':
/home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ll.c:1169: undefined reference to `__wrap_cyw43_cb_process_ethernet'
c:/users/kevinar/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/ld.exe: C:\Users\Kevinar\.platformio\packages\framework-arduinopico\lib\libpicow-noipv6-nobtc-noble.a(cyw43_ll.c.obj): in function `cyw43_do_ioctl':
/home/earle/src/pico-quick-toolchain/arduino/pico-sdk/lib/cyw43-driver/src/cyw43_ll.c:1203: undefined reference to `__wrap_cyw43_cb_process_ethernet'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\pico\WIFIANALYZER.elf] Error 1

Code:

#include <Arduino.h>
#include <WiFi.h>
#include "picopad.h"

const char *ssid = "my_ssid";
const char *password = "my_pass";

char ssid1[20];
char signal1[20];
char channel1[20];

void setup() {
    Serial.begin(115200);

    // Device initialization
    device_init();
    DrawClear();
    DispUpdate();

    // Connect to WiFi
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Připojování k WiFi...");
    }

    Serial.println("Připojeno k WiFi");
}

void loop() {
    // Scan WiFi
    int networks = WiFi.scanNetworks();

  // List found wifi networks
    if (networks == 0) {
        Serial.println("Žádné dostupné sítě");
    } else {
        Serial.println("Dostupné sítě:");
        for (int i = 0; i < networks; ++i) {
            Serial.print("SSID: ");
            Serial.println(WiFi.SSID(i));
            Serial.print("Signál: ");
            Serial.println(WiFi.RSSI(i));
            Serial.print("Kanál: ");
            Serial.println(WiFi.channel(i));
            Serial.println("-----------------------");

            // View information on the display
            snprintf(ssid1, sizeof(ssid1), "SSID: %s", WiFi.SSID(i));
            snprintf(signal1, sizeof(signal1), "Signál: %d", WiFi.RSSI(i));
            snprintf(channel1, sizeof(channel1), "Kanál: %d", WiFi.channel(i));

            DrawText2(ssid1, 10, i * 30, COL_WHITE);
            DrawText2(signal1, 10, i * 30 + 20, COL_WHITE);
            DrawText2(channel1, 10, i * 30 + 40, COL_WHITE);
            
            DispUpdate();
        }
    }
    delay(5000);
}

platformio.ini:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env]
name = WIFIANALYZER
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
board_build.filesystem_size = 0m
monitor_speed = 115200

[env:pico]
extra_scripts = 
	pre:tools/revert_patch_memmap.py
	post:tools/copy_build.py

[env:custom-loader]
extra_scripts = 
	pre:tools/patch_memmap.py
	post:tools/copy_build.py


Thank you very much for your help

  1. Does it work without all extra_scripts?
  2. Can you do a clean reinstall of platform + framework + toolchain code to make sure all-latest versions are installed? I’d just recommend deletion of C:\Users\<user>\.platformio and restarting VSCode.

You have the wrong board in your platformio.ini. It should be:

[env:rpipicow]
board = rpipicow

1 Like