Background
Trying to compile netcat ( nc ) using minGW.
Lineage
Error
Error – Text
undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_inet_addr' undefined reference to `__imp_gethostbyname' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_inet_ntoa' undefined reference to `__imp_gethostbyaddr' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_inet_ntoa' undefined reference to `__imp_gethostbyaddr' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_gethostbyname' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_htons' undefined reference to `__imp_getservbyport' undefined reference to `__imp_ntohs' undefined reference to `__imp_getservbyname' undefined reference to `__imp_ntohs' undefined reference to `__imp_WSASetLastError' undefined reference to `__imp_socket' undefined reference to `__imp_socket' undefined reference to `__imp_setsockopt' undefined reference to `__imp_htons' undefined reference to `__imp_bind' undefined reference to `__imp_inet_ntoa' undefined reference to `__imp_inet_ntoa' undefined reference to `__imp_htons' undefined reference to `__imp_connect' undefined reference to `__imp_WSASetLastError' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_WSASetLastError' undefined reference to `__imp_listen' undefined reference to `__imp_getsockname' undefined reference to `__imp_inet_ntoa' undefined reference to `__imp_ntohs' undefined reference to `__imp_recvfrom' undefined reference to `__imp_connect' undefined reference to `__imp_accept' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_getsockname' undefined reference to `__imp_inet_ntoa' undefined reference to `__imp_ntohs' undefined reference to `__imp_inet_ntoa' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_send' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_send' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_WSASetLastError' undefined reference to `__imp_select' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_WSASetLastError' undefined reference to `__WSAFDIsSet' undefined reference to `__imp_recv' undefined reference to `__imp_send' undefined reference to `__WSAFDIsSet' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_WSAGetLastError' undefined reference to `__imp_shutdown' undefined reference to `__imp_closesocket' undefined reference to `__imp_WSACleanup'
TroubleShooting
Microsoft
Docs
Docs / Windows / Windows Sockets 2 / Winsock.h / WSAGetLastError function
Image
Textual
- Header
- winsock.h ( include Winsock2.h )
- Library
- Ws2_32.lib
- Dll
- Ws2_32.dll
Remediation
Outline
- Adding ws2_32 to list of libraries referenced during the build
Sample
setlocal rem dadeniji rem SET COMPILER=c:\MinGW\bin\gcc.exe set _compilerFolder=C:\mingw\x86_64\8.1.0\posix\seh\mingw64\bin set _compilerBinary=gcc.exe set COMPILER=%_compilerFolder%\%_compilerBinary% rem dadeniji rem SET LIB_DIR=c:\MinGW\lib SET LIB_DIR=C:\mingw\x86_64\8.1.0\posix\seh\mingw64\lib rem dadeniji set PATH=%PATH%;%_compilerFolder% @REM not needed? SET COMPILE_OPTIONS=-c -DWIN32 -DNDEBUG -D_CONSOLE -DTELNET SET COMPILE_OPTIONS=-c if exist *.o del *.o if exist nc.exe del nc.exe "%COMPILER%" %COMPILE_OPTIONS% getopt.c "%COMPILER%" %COMPILE_OPTIONS% doexec.c "%COMPILER%" %COMPILE_OPTIONS% netcat.c "%COMPILER%" getopt.o doexec.o netcat.o --output nc.exe -lkernel32 -luser32 -lwinmm -lws2_32 endlocal
Source Code Control
GitHub
Gist
netcat on MS Windows
Link
Summary
When we initially downloaded the source code for netcat on MS Windows, we used Microsoft’s Visual Studio.Net to compile it.
Since then downloaded MinGW and gained some familiarity with that tool, as well.
Thankfully, able to compile against the MinGW tool with small modifications.
[…] MinGW – Error – “undefined reference to `__imp_WSAStartup’” LinkLink […]