Referencia indefinida a getaddrinfo

He estado recibiendo este error desde hace bastante tiempo y Google tampoco ha sido de mucha ayuda.

Soy un novato en la programación de Winsock y trato de aprender de los recursos en línea. Estoy tratando de construir un servidor simple usando detalles en el sitio web de MSDN. Cada vez que compilo el código (MinGW), aparece el error mencionado en el título Undefined reference to getaddrinfo). A continuación se muestra el código:

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#define WINVER WindowsXP

#include <windows.h>
#include <winsock2.h>
#include <winsock.h>
#include <ws2tcpip.h>
#include <stdio.h>

int main() {
    WSADATA wsaData;
    int iResult;
    iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
    if (iResult != 0) {
        printf("WSAStartup failed: %d\n", iResult);
        return 1;
    }

    #define DEFAULT_PORT "27015"

    struct addrinfo *result = NULL, *ptr = NULL, hints;

    ZeroMemory(&hints, sizeof (hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_flags = AI_PASSIVE;

    // Resolve the local address and port to be used by the server
    iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
    if (iResult != 0) {
        printf("getaddrinfo failed: %d\n", iResult);
        WSACleanup();
        return 1;
    }
    return 0;
}  

Estoy compilando con el siguiente comando:

gcc msdn_np.c -o msdn_np.exe -lWS2_32

Respuestas a la pregunta(3)

Su respuesta a la pregunta