diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c
index 2f46e4c6ee..d6b6ebc2f2 100644
--- a/app/test/test_link_bonding.c
+++ b/app/test/test_link_bonding.c
@@ -10,8 +10,10 @@
 #include <stdint.h>
 #include <inttypes.h>
 #include <errno.h>
+#include <pthread.h>
 #include <sys/queue.h>
 #include <sys/time.h>
+
 #include <rte_cycles.h>
 #include <rte_byteorder.h>
 #include <rte_common.h>
diff --git a/drivers/common/mlx5/mlx5_common.c b/drivers/common/mlx5/mlx5_common.c
index 0ad14a48c7..ca8543e36e 100644
--- a/drivers/common/mlx5/mlx5_common.c
+++ b/drivers/common/mlx5/mlx5_common.c
@@ -5,6 +5,7 @@
 #include <unistd.h>
 #include <string.h>
 #include <stdio.h>
+#include <pthread.h>
 
 #include <rte_errno.h>
 #include <rte_mempool.h>
diff --git a/drivers/common/mlx5/windows/mlx5_win_ext.h b/drivers/common/mlx5/windows/mlx5_win_ext.h
index 6f69329a6f..a71c69bff5 100644
--- a/drivers/common/mlx5/windows/mlx5_win_ext.h
+++ b/drivers/common/mlx5/windows/mlx5_win_ext.h
@@ -5,6 +5,8 @@
 #ifndef __MLX5_WIN_ETX_H__
 #define __MLX5_WIN_ETX_H__
 
+#include <pthread.h>
+
 #include "mlx5_prm.h"
 #include "mlx5devx.h"
 
diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index ed21ba7f29..0e01b1d4ba 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -8,6 +8,7 @@
 
 #include <inttypes.h>
 #include <stdbool.h>
+#include <pthread.h>
 #include <sys/queue.h>
 
 #include <rte_pci.h>
diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h
index 97e261d306..11019b5623 100644
--- a/drivers/net/qede/base/bcm_osal.h
+++ b/drivers/net/qede/base/bcm_osal.h
@@ -8,6 +8,7 @@
 #define __BCM_OSAL_H
 
 #include <stdbool.h>
+#include <pthread.h>
 #include <time.h>
 #include <rte_bitops.h>
 #include <rte_byteorder.h>
diff --git a/drivers/raw/ifpga/base/opae_osdep.h b/drivers/raw/ifpga/base/opae_osdep.h
index 033b7e098c..e91205f536 100644
--- a/drivers/raw/ifpga/base/opae_osdep.h
+++ b/drivers/raw/ifpga/base/opae_osdep.h
@@ -7,6 +7,7 @@
 
 #include <string.h>
 #include <stdbool.h>
+#include <pthread.h>
 
 #ifdef RTE_LIB_EAL
 #include "osdep_rte/osdep_generic.h"
diff --git a/drivers/vdpa/sfc/sfc_vdpa.c b/drivers/vdpa/sfc/sfc_vdpa.c
index bd6ecde450..9db87fcb7d 100644
--- a/drivers/vdpa/sfc/sfc_vdpa.c
+++ b/drivers/vdpa/sfc/sfc_vdpa.c
@@ -4,6 +4,7 @@
 
 #include <stdbool.h>
 #include <stdint.h>
+#include <pthread.h>
 #include <sys/queue.h>
 
 #include <rte_common.h>
diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
index d74b581567..a6d21f1cba 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -5,6 +5,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <pthread.h>
 #ifndef RTE_EXEC_ENV_WINDOWS
 #include <syslog.h>
 #endif
diff --git a/lib/eal/common/eal_common_trace.c b/lib/eal/common/eal_common_trace.c
index cb980af06d..b21e61bf39 100644
--- a/lib/eal/common/eal_common_trace.c
+++ b/lib/eal/common/eal_common_trace.c
@@ -4,6 +4,7 @@
 
 #include <stdlib.h>
 #include <fnmatch.h>
+#include <pthread.h>
 #include <sys/queue.h>
 #include <regex.h>
 
diff --git a/lib/eal/common/malloc_mp.c b/lib/eal/common/malloc_mp.c
index 7270c2ec90..4d62397aba 100644
--- a/lib/eal/common/malloc_mp.c
+++ b/lib/eal/common/malloc_mp.c
@@ -4,6 +4,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <pthread.h>
 #include <sys/time.h>
 
 #include <rte_errno.h>
diff --git a/lib/eal/freebsd/eal_alarm.c b/lib/eal/freebsd/eal_alarm.c
index acdcf53804..e5b0909a45 100644
--- a/lib/eal/freebsd/eal_alarm.c
+++ b/lib/eal/freebsd/eal_alarm.c
@@ -4,6 +4,7 @@
 
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <pthread.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/lib/eal/include/rte_per_lcore.h b/lib/eal/include/rte_per_lcore.h
index 2b846f9337..5a1497631a 100644
--- a/lib/eal/include/rte_per_lcore.h
+++ b/lib/eal/include/rte_per_lcore.h
@@ -22,8 +22,6 @@
 extern "C" {
 #endif
 
-#include <pthread.h>
-
 #ifdef RTE_TOOLCHAIN_MSVC
 /**
  * Macro to define a per lcore variable "var" of type "type", don't
diff --git a/lib/eal/linux/eal_alarm.c b/lib/eal/linux/eal_alarm.c
index 397f25d7d5..766ba2c251 100644
--- a/lib/eal/linux/eal_alarm.c
+++ b/lib/eal/linux/eal_alarm.c
@@ -5,6 +5,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <pthread.h>
 #include <sys/queue.h>
 #include <sys/time.h>
 #include <sys/timerfd.h>
diff --git a/lib/ethdev/ethdev_driver.c b/lib/ethdev/ethdev_driver.c
index 0be1e8ca04..30db839a77 100644
--- a/lib/ethdev/ethdev_driver.c
+++ b/lib/ethdev/ethdev_driver.c
@@ -3,6 +3,7 @@
  */
 
 #include <stdlib.h>
+#include <pthread.h>
 
 #include <rte_kvargs.h>
 #include <rte_malloc.h>
diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h
index 980f837ab6..3fa8b309c1 100644
--- a/lib/ethdev/ethdev_driver.h
+++ b/lib/ethdev/ethdev_driver.h
@@ -18,6 +18,8 @@ extern "C" {
  * use them.
  */
 
+#include <pthread.h>
+
 #include <dev_driver.h>
 #include <rte_compat.h>
 #include <rte_ethdev.h>
diff --git a/lib/ethdev/rte_ethdev_core.h b/lib/ethdev/rte_ethdev_core.h
index 46e9721e07..8d260584b4 100644
--- a/lib/ethdev/rte_ethdev_core.h
+++ b/lib/ethdev/rte_ethdev_core.h
@@ -5,8 +5,6 @@
 #ifndef _RTE_ETHDEV_CORE_H_
 #define _RTE_ETHDEV_CORE_H_
 
-#include <pthread.h>
-
 /**
  * @file
  *
diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c
index 271d854f78..0c5aabea45 100644
--- a/lib/ethdev/rte_flow.c
+++ b/lib/ethdev/rte_flow.c
@@ -6,6 +6,7 @@
 #include <errno.h>
 #include <stddef.h>
 #include <stdint.h>
+#include <pthread.h>
 
 #include <rte_common.h>
 #include <rte_errno.h>
diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c
index c166ef69a8..2145d803e4 100644
--- a/lib/eventdev/rte_event_eth_rx_adapter.c
+++ b/lib/eventdev/rte_event_eth_rx_adapter.c
@@ -4,6 +4,7 @@
  */
 #include <ctype.h>
 #include <stdlib.h>
+#include <pthread.h>
 #if defined(LINUX)
 #include <sys/epoll.h>
 #endif
diff --git a/lib/vhost/vhost.c b/lib/vhost/vhost.c
index eb6309b681..c03bb9c6eb 100644
--- a/lib/vhost/vhost.c
+++ b/lib/vhost/vhost.c
@@ -6,6 +6,7 @@
 #include <linux/virtio_net.h>
 #include <stdint.h>
 #include <stdlib.h>
+#include <pthread.h>
 #ifdef RTE_LIBRTE_VHOST_NUMA
 #include <numa.h>
 #include <numaif.h>
