"extern int errno" is just a really bad idea. diff -up mysql-5.5.28/include/my_sys.h.p1 mysql-5.5.28/include/my_sys.h --- mysql-5.5.28/include/my_sys.h.p1 2012-08-29 10:50:46.000000000 +0200 +++ mysql-5.5.28/include/my_sys.h 2012-12-06 14:09:15.218170154 +0100 @@ -197,13 +197,8 @@ extern void my_large_free(uchar *ptr); #define my_afree(PTR) my_free(PTR) #endif /* HAVE_ALLOCA */ -#ifndef errno /* did we already get it? */ -#ifdef HAVE_ERRNO_AS_DEFINE #include /* errno is a define */ -#else -extern int errno; /* declare errno */ -#endif -#endif /* #ifndef errno */ + extern char *home_dir; /* Home directory for user */ extern const char *my_progname; /* program-name (printed in errors) */ extern char curr_dir[]; /* Current directory for user */