Moin.
strdup() gehört nicht zur C99 Standardbibliothek, sondern ist Teil des POSIX-Standard.
Deklariere die Funktion also selbst, d.h. füge an den Anfang deiner Quelldatei folgende Zeile ein:
extern char * strdup(const char *);
Alternativ könntest du auch im Modus -std=gnu99 kompilieren oder ganz auf strdup verzichten:
size_t size = strlen(str) + 1;
char * copy = memcpy(malloc(size), str, size);
Christoph