Cant build DuetWifiServer


  • administrators

    Check that you have file libLwipESP8266.a in the Release folder within the LwipESP8266 project. That is the output file from building that project.

    I confirm that you need to use the dev branch of all 3 projects to build version 1.21.



  • hmm ok ,
    but i already use the dev branches for each of the 3 projects and i have a file named : "libLwipESP8266.a in the release folder of the LwipESP8266 project.


  • administrators

    In that case I suggest you check what the library path is set to in the linker settings for project DuetWiFiSocketServer, because that folder should be included in it.



  • 0_1525255641221_Bildschirmfoto 2018-05-02 um 12.06.34.png

    do you mean this settings ?


  • administrators

    @eberlin said in Cant build DuetWifiServer:

    xtensa-lx106-elf-g++ -nostdlib -L"/Users/xxx/Workspace/c++/LwipESP8266/Release" -L"/Users/xxx/Workspace/c++/CoreESP8266/Release" -L"/Users/xxx/Workspace/c++/CoreESP8266/sdk/lib" -L"/Users/xxx/Workspace/c++/DuetWiFiSocketServer/src/ld" -TDuetWiFiSocketServer.ld -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -Wl,-Map,DuetWiFiSocketServer.map -o "DuetWiFiSocketServer.elf" -Wl,--start-group /Users/xxx/Workspace/c++/CoreESP8266/Release/cores/esp8266/heap.o ./src/Connection.o ./src/HSPI.o ./src/Listener.o ./src/Misc.o ./src/SocketServer.o -lCoreESP8266 -lhal -lphy -lpp -lnet80211 -lLwipESP8266 -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,--end-group

    Yes, that looks OK. Looking at your command line from one of your previous posts:

    xtensa-lx106-elf-g++ -nostdlib -L"/Users/xxx/Workspace/c++/LwipESP8266/Release" -L"/Users/xxx/Workspace/c++/CoreESP8266/Release" -L"/Users/xxx/Workspace/c++/CoreESP8266/sdk/lib" -L"/Users/xxx/Workspace/c++/DuetWiFiSocketServer/src/ld" -TDuetWiFiSocketServer.ld -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -Wl,-Map,DuetWiFiSocketServer.map -o "DuetWiFiSocketServer.elf" -Wl,--start-group /Users/xxx/Workspace/c++/CoreESP8266/Release/cores/esp8266/heap.o ./src/Connection.o ./src/HSPI.o ./src/Listener.o ./src/Misc.o ./src/SocketServer.o -lCoreESP8266 -lhal -lphy -lpp -lnet80211 -lLwipESP8266 -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,--end-group

    the settings concerned (in bold) look OK to me too. Did you check that the case of the letters in the actual output file in /Users/xxx/Workspace/c++/CoreLwipESP8266/Release was exactly correct? I build under Windows, so an error in the letter case wouldn't matter on my system.



  • should i search for a output file named : lLwipESP8266 in
    /Users/xxx/Workspace/c++/CoreESP8266/Release ?
    there is no such file. 0_1525258088670_Bildschirmfoto 2018-05-02 um 12.47.35.png


  • administrators

    Sorry, I meant /Users/xxx/Workspace/c++/LwipESP8266/Release.



  • ah ok , in this folder i got this files:

    0_1525260216051_Bildschirmfoto 2018-05-02 um 13.22.53.png


  • administrators

    Looks like it's got the right file there, assuming that it is a sensible file and not zero length or something like that. I suggest you clean and rebuild project LwipESP8266. After that, if DuetWiFiSocketServer still won't link, try copying the libLwipESP8266.a file into one of the other library search directories, and/or ask for help with Eclipse and/or gcc.



  • i cleaned an rebuilt the project, and it still dont work. i also copied the file into some search directories, but it returned the same error ...


  • administrators

    Wierd, it's finding -lCoreESP8266 but not -lLwipESP8266 which has a similar format and the same number of characters. Does the libLwipESP8266.a file look a sensible size, and does it have the correct date/time corresponding to when you built it? My copy of that file is 423 KB (433,816 bytes) long. Were any errors reported when you cleaned and built project LwipESP8266 ?

    EDIT: for reference, this is what I get:

    'Invoking: Cross G++ Linker'
    xtensa-lx106-elf-g++ -nostdlib -L"C:\Eclipse\Firmware/LwipESP8266/Release" -L"C:\Eclipse\Firmware/CoreESP8266/Release" -L"C:\Eclipse\Firmware/CoreESP8266/sdk/lib" -L"C:\Eclipse\Firmware/DuetWiFiSocketServer/src/ld" -TDuetWiFiSocketServer.ld -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -Wl,-Map,DuetWiFiSocketServer.map -o "DuetWiFiSocketServer.elf" -Wl,--start-group C:\Eclipse\Firmware/CoreESP8266/Release/cores/esp8266/heap.o ./src/Connection.o ./src/HSPI.o ./src/Listener.o ./src/Misc.o ./src/SocketServer.o -lCoreESP8266 -lhal -lphy -lpp -lnet80211 -lLwipESP8266 -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,--end-group
    'Finished building target: DuetWiFiSocketServer.elf'



  • hello dc42,

    the libLwipESP8266.a file have a size of : 433.796 Byte (434 KB);
    the time is the same
    and i got no errors when i cleaned the LwipESP8266 project.

    my future goal is, that the printer send his data to a server, when he´s connected to the internet. this i why i want to build the DuetWifiServer and later update the code. is that the right way to do that?


  • administrators

    Maybe you should try putting your workspace at /Eclipse/Firmware instead of at /Users/xxx/Workspace/c++ in case either the path is too long or the + characters in your path are confusing Eclipse or ld ?

    I defined a message code connCreate in file MessageFormats.h for the Duet to send the WiFi module a command to open a TCP connection with a remote host, however file SocketServer.cpp has this:

    case NetworkCommand::connCreate: // create a connection
    // Not implemented yet

    So it would need to be implemented, then the Duet will be able to open remote connections.



  • i copied all three projects in this path : /Eclipse/Firmware and imported them into eclipse.
    but when i building the DuetWifiSocketServer , i got the same error :

    xtensa-lx106-elf-g++ -nostdlib -L"/Users/xxx/Workspace/c++/LwipESP8266/Release" -L"/Users/xxx/Workspace/c++/CoreESP8266/Release" -L"/Users/xxx/Workspace/c++/CoreESP8266/sdk/lib" -L"/Users/xxx/Workspace/c++/DuetWiFiSocketServer/src/ld" -TDuetWiFiSocketServer.ld -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -Wl,-Map,DuetWiFiSocketServer.map -o "DuetWiFiSocketServer.elf" -Wl,--start-group /Users/xxx/Workspace/c++/CoreESP8266/Release/cores/esp8266/heap.o ./src/Connection.o ./src/HSPI.o ./src/Listener.o ./src/Misc.o ./src/SocketServer.o -lCoreESP8266 -lhal -lphy -lpp -lnet80211 -lLwipESP8266 -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,--end-group
    /Users/xxx/Documents/Arduino/hardware/esp8266com/esp8266/tools/macosx/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: cannot find -lLwipESP8266
    collect2: error: ld returned 1 exit status
    make: *** [DuetWiFiSocketServer.elf] Error 1

    i deleted the old projects and cleaned everything. but the program uses the same path , why ...?


  • administrators

    Did you try the Refresh option in the Project menu?



  • i refreshed and cleaned/rebuilt it now. but DuetWifiSocketServer tries to get this command from the old path again.
    i deleted the old projects from the harddrive and the program now says:

    error: /Users/xxx/Workspace/c++/CoreESP8266/Release/cores/esp8266/heap.o: No such file or directory


  • administrators

    Suggestions:

    1. Check that the paths in the tool settings are all specified in terms of ${workspace_loc} and don't have an absolute path in them.

    2. I suggest you delete the .mk files in the output directories, to force them to be rebuilt. You may get an error the first time you build after that, but it should go away when you try the build again.



  • great thank you , i think the first point worked for me !

    i didnt delete the .mk files. should i ?

    i got this error now :

    /Library/Developer/CommandLineTools/usr/bin/make --no-print-directory post-build
    Generating binary
    "C:\Users\David\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.12/esptool.exe" -eo "C:\Users\David\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0/bootloaders/eboot/eboot.elf" -bo "/Eclipse/Firmware/DuetWiFiSocketServer/Release/DuetWiFiServer.bin" -bm dio -bf 40 -bz 4M -bs .text -bp 4096 -ec -eo "/Eclipse/Firmware/DuetWiFiSocketServer/Release/DuetWiFiSocketServer.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec
    /bin/sh: C:\Users\David\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.12/esptool.exe: No such file or directory
    make[1]: [post-build] Error 127 (ignored)

    but i already changed the path to the compiler . this is the default one . i changed it in : properties-->c/c++Build--> Settings



  • when i build it a second time ,it does not throw any errors


  • administrators

    So it's fully built now?

    EDIT: as it is just the post build step that failed, I guess it still hasn't done the post build step. You need to change the Build Variables, in particulat EspBootFile and EspToolPath.


Log in to reply