--- a/support/include/sockaddr.h
+++ b/support/include/sockaddr.h
@@ -20,7 +20,10 @@
 #ifndef NFS_UTILS_SOCKADDR_H
 #define NFS_UTILS_SOCKADDR_H
 
+/* uClibc doesn't have/need libio.h */
+#ifndef __UCLIBC__
 #include <libio.h>
+#endif
 #include <stdbool.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
--- a/support/nfs/svc_socket.c
+++ b/support/nfs/svc_socket.c
@@ -40,10 +40,13 @@ int getservport(u_long number, const cha
 	char rpcdata[1024], servdata[1024];
 	struct rpcent rpcbuf, *rpcp;
 	struct servent servbuf, *servp = NULL;
-	int ret;
-
+	int ret=0;
+#ifndef __UCLIBC__
 	ret = getrpcbynumber_r(number, &rpcbuf, rpcdata, sizeof rpcdata,
 				&rpcp);
+#else
+	rpcp = getrpcbynumber (number);
+#endif
 	if (ret == 0 && rpcp != NULL) {
 		/* First try name.  */
 		ret = getservbyname_r(rpcp->r_name, proto, &servbuf, servdata,
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -162,6 +162,7 @@ static void auth_unix_gid(FILE *f)
 	pw = getpwuid(uid);
 	if (!pw)
 		rv = -1;
+#ifndef __UCLIBC__
 	else {
 		rv = getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
 		if (rv == -1 && ngroups >= groups_len) {
@@ -176,6 +177,7 @@ static void auth_unix_gid(FILE *f)
 			}
 		}
 	}
+#endif
 	qword_printuint(f, uid);
 	qword_printuint(f, time(0) + DEFAULT_TTL);
 	if (rv >= 0) {