Cant build DuetWifiServer
-
ok , this makes sense , thank you.
i tried to use the projects from the dev branches , and when i built the "duetWifiServerSocket" project, i got this error :Building target: DuetWiFiSocketServer.elf
Invoking: Cross G++ Linker
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 -
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. -
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.
-
do you mean this settings ?
-
@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. -
Sorry, I meant /Users/xxx/Workspace/c++/LwipESP8266/Release.
-
ah ok , in this folder i got this files:
-
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 ...
-
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?
-
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 yetSo 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 1i deleted the old projects and cleaned everything. but the program uses the same path , why ...?
-
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
-
Suggestions:
-
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.
-
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