diff --git a/src/download-via-ssh/download-via-ssh.cc b/src/download-via-ssh/download-via-ssh.cc
index b64455eb172498bdc68f62dbf2db34e81cd3c279..164c24b49e268b49c51de01025af3b13e384918f 100644
--- a/src/download-via-ssh/download-via-ssh.cc
+++ b/src/download-via-ssh/download-via-ssh.cc
@@ -9,6 +9,7 @@
 #include "store-api.hh"
 
 #include <iostream>
+#include <stdlib.h>
 #include <unistd.h>
 
 using namespace nix;
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index ef4ea370622ba45ecaef51f97beff6979d0db4f4..bf5688a1e606bebdb44688fb20bf318206d32d95 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -11,6 +11,7 @@
 #include <exception>
 #include <algorithm>
 
+#include <stdlib.h>
 #include <sys/time.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/src/libstore/optimise-store.cc b/src/libstore/optimise-store.cc
index dd18d66fa008adb3dcb1a87600444e466d90627a..fb56076765101f58b42bcfc6e85a86009cea8d01 100644
--- a/src/libstore/optimise-store.cc
+++ b/src/libstore/optimise-store.cc
@@ -4,6 +4,7 @@
 #include "local-store.hh"
 #include "globals.hh"
 
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index 650f177986a00d1a4ba2530b4727f1906547bd22..cabde051bd029af36328a928dfa18c2bbc6ec3d3 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -10,6 +10,7 @@
 #include <sys/stat.h>
 #include <sys/socket.h>
 #include <sys/un.h>
+#include <errno.h>
 #include <fcntl.h>
 
 #include <iostream>
diff --git a/src/libutil/monitor-fd.hh b/src/libutil/monitor-fd.hh
index 72d23fb6934c3b299b17c280eaef2559bf2e6ab3..e99869effe1a8b902a01122425378b215e4e3afd 100644
--- a/src/libutil/monitor-fd.hh
+++ b/src/libutil/monitor-fd.hh
@@ -3,6 +3,7 @@
 #include <thread>
 #include <atomic>
 
+#include <stdlib.h>
 #include <poll.h>
 #include <sys/types.h>
 #include <unistd.h>