--- a/libc/sunrpc/rpc/types.h
+++ b/libc/sunrpc/rpc/types.h
@@ -68,6 +68,7 @@ typedef unsigned long rpcport_t;
 #include <sys/types.h>
 #endif
 
+#if !defined(_CROSS_RPCGEN_) || !defined(__APPLE__)
 #ifndef __u_char_defined
 typedef __u_char u_char;
 typedef __u_short u_short;
@@ -83,6 +84,7 @@ typedef __daddr_t daddr_t;
 typedef __caddr_t caddr_t;
 # define __daddr_t_defined
 #endif
+#endif
 
 #include <sys/time.h>
 #include <sys/param.h>
--- a/libc/sunrpc/rpc_main.c
+++ b/libc/sunrpc/rpc_main.c
@@ -40,7 +40,11 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
+#ifdef _CROSS_RPCGEN_
+#define gettext(X) (X)
+#else
 #include <libintl.h>
+#endif
 #include <ctype.h>
 #include <sys/types.h>
 #include <sys/param.h>
@@ -998,9 +1002,10 @@ mkfile_output (struct commandline *cmd)
 	abort ();
       temp = rindex (cmd->infile, '.');
       cp = stpcpy (mkfilename, "Makefile.");
-      if (temp != NULL)
-	*((char *) stpncpy (cp, cmd->infile, temp - cmd->infile)) = '\0';
-      else
+      if (temp != NULL) {
+	strncpy (cp, cmd->infile, temp - cmd->infile);
+	cp[temp - cmd->infile - 1] = '\0';
+      } else
 	stpcpy (cp, cmd->infile);
 
     }
--- a/libc/sunrpc/rpc_scan.c
+++ b/libc/sunrpc/rpc_scan.c
@@ -39,7 +39,11 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <string.h>
+#ifdef _CROSS_RPCGEN_
+#define gettext(X) (X)
+#else
 #include <libintl.h>
+#endif
 #include "rpc_scan.h"
 #include "rpc_parse.h"
 #include "rpc_util.h"
--- a/libc/timezone/Makefile
+++ b/libc/timezone/Makefile
@@ -181,7 +181,7 @@ zic-objs = zic.o ialloc.o scheck.o
 $(objpfx)zic: $(addprefix $(objpfx), $(zic-objs))
 
 $(addprefix $(objpfx)cross-,$(zic-objs)): $(objpfx)cross-%.o: %.c
-	gcc $< -c $(OUTPUT_OPTION) $(CFLAGS-$*.c) $(CPPFLAGS-$*) \
+	gcc $< -c $(OUTPUT_OPTION) $(filter-out -DHAVE_GETTEXT,$(CFLAGS-$*.c)) $(CPPFLAGS-$*) \
 		-DCROSS_ZIC $(compile-mkdep-flags)
 
 $(objpfx)cross-zic: $(addprefix $(objpfx)cross-,$(zic-objs))
