diff --git a/package/ccache/ccache.mk b/package/ccache/ccache.mk
index 9155441087..393989f546 100644
--- a/package/ccache/ccache.mk
+++ b/package/ccache/ccache.mk
@@ -14,6 +14,17 @@ CCACHE_SOURCE  = ccache-$(CCACHE_VERSION).tar.bz2
 HOST_CCACHE_CONF_ENV = \
 	CC="$(HOSTCC_NOCCACHE)"
 
+# Force ccache to use its internal zlib. The problem is that without
+# this, ccache would link against the zlib of the build system, but we
+# might build and install a different version of zlib in $(O)/host
+# afterwards, which ccache will pick up. This might break if there is
+# a version mismatch. A solution would be to add host-zlib has a
+# dependency of ccache, but it would require tuning the zlib .mk file
+# to use HOSTCC_NOCCACHE as the compiler. Instead, we take the easy
+# path: tell ccache to use its internal copy of zlib, so that ccache
+# has zero dependency besides the C library.
+HOST_CCACHE_CONF_OPT += ccache_cv_zlib_1_2_3=no
+
 # We directly hardcode the cache location into the binary, as it is
 # much easier to handle than passing an environment variable.
 define HOST_CCACHE_FIX_CCACHE_DIR