diff --git a/redfish-core/include/redfish_aggregator.hpp b/redfish-core/include/redfish_aggregator.hpp
index 78d6819..0a4ea4a 100644
--- a/redfish-core/include/redfish_aggregator.hpp
+++ b/redfish-core/include/redfish_aggregator.hpp
@@ -163,8 +163,8 @@
                               propertyName);
 }
 
-static inline void addPrefixToStringItem(std::string& strValue,
-                                         std::string_view prefix)
+inline void addPrefixToStringItem(std::string& strValue,
+                                  std::string_view prefix)
 {
     // Make sure the value is a properly formatted URI
     auto parsed = boost::urls::parse_relative_ref(strValue);
@@ -246,8 +246,7 @@
     }
 }
 
-static inline void addPrefixToItem(nlohmann::json& item,
-                                   std::string_view prefix)
+inline void addPrefixToItem(nlohmann::json& item, std::string_view prefix)
 {
     std::string* strValue = item.get_ptr<std::string*>();
     if (strValue == nullptr)
@@ -262,9 +261,9 @@
     item = *strValue;
 }
 
-static inline void addAggregatedHeaders(crow::Response& asyncResp,
-                                        const crow::Response& resp,
-                                        std::string_view prefix)
+inline void addAggregatedHeaders(crow::Response& asyncResp,
+                                 const crow::Response& resp,
+                                 std::string_view prefix)
 {
     if (!resp.getHeaderValue("Content-Type").empty())
     {
@@ -292,8 +291,8 @@
 }
 
 // Fix HTTP headers which appear in responses from Task resources among others
-static inline void
-    addPrefixToHeadersInResp(nlohmann::json& json, std::string_view prefix)
+inline void addPrefixToHeadersInResp(nlohmann::json& json,
+                                     std::string_view prefix)
 {
     // The passed in "HttpHeaders" should be an array of headers
     nlohmann::json::array_t* array = json.get_ptr<nlohmann::json::array_t*>();
@@ -325,7 +324,7 @@
 
 // Search the json for all URIs and add the supplied prefix if the URI is for
 // an aggregated resource.
-static inline void addPrefixes(nlohmann::json& json, std::string_view prefix)
+inline void addPrefixes(nlohmann::json& json, std::string_view prefix)
 {
     nlohmann::json::object_t* object =
         json.get_ptr<nlohmann::json::object_t*>();
diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index e90f749..68b7ff5 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -148,7 +148,7 @@
  * @param[in] type Issuer/Subject
  * @return None
  */
-static void updateCertIssuerOrSubject(nlohmann::json& out,
+inline void updateCertIssuerOrSubject(nlohmann::json& out,
                                       std::string_view value)
 {
     // example: O=openbmc-project.xyz,CN=localhost
@@ -213,7 +213,7 @@
  * @param[in] countPtr Json pointer to the count in asyncResp
  * @return None
  */
-static void getCertificateList(
+inline void getCertificateList(
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
     const std::string& basePath, const nlohmann::json::json_pointer& listPtr,
     const nlohmann::json::json_pointer& countPtr)
@@ -289,7 +289,7 @@
  * @param[in] name  name of the certificate
  * @return None
  */
-static void getCertificateProperties(
+inline void getCertificateProperties(
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
     const std::string& objectPath, const std::string& service,
     const std::string& certId, const boost::urls::url& certURL,
@@ -379,7 +379,7 @@
         });
 }
 
-static void
+inline void
     deleteCertificate(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                       const std::string& service,
                       const sdbusplus::message::object_path& objectPath)
@@ -585,7 +585,7 @@
  * @param[in] csrObjPath CSR D-Bus object path
  * @return None
  */
-static void getCSR(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+inline void getCSR(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                    const std::string& certURI, const std::string& service,
                    const std::string& certObjPath,
                    const std::string& csrObjPath)
diff --git a/redfish-core/lib/fan.hpp b/redfish-core/lib/fan.hpp
index 62494a8..28b995e 100644
--- a/redfish-core/lib/fan.hpp
+++ b/redfish-core/lib/fan.hpp
@@ -167,7 +167,7 @@
     return !(fanName.empty() || fanName != fanId);
 }
 
-static inline void handleFanPath(
+inline void handleFanPath(
     const std::string& fanId,
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
     const dbus::utility::MapperGetSubTreePathsResponse& fanPaths,
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index f9a68e7..1858c6d 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -164,7 +164,7 @@
     return true;
 }
 
-static bool
+inline bool
     getRedfishLogFiles(std::vector<std::filesystem::path>& redfishLogFiles)
 {
     static const std::filesystem::path redfishLogDir = "/var/log";
@@ -2736,7 +2736,7 @@
             });
 }
 
-static void
+inline void
     logCrashdumpEntry(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                       const std::string& logID, nlohmann::json& logEntryJson)
 {
diff --git a/redfish-core/lib/pcie.hpp b/redfish-core/lib/pcie.hpp
index 3d7f115..f0b2f23 100644
--- a/redfish-core/lib/pcie.hpp
+++ b/redfish-core/lib/pcie.hpp
@@ -41,7 +41,7 @@
 static constexpr std::array<std::string_view, 1> pcieSlotInterface = {
     "xyz.openbmc_project.Inventory.Item.PCIeSlot"};
 
-static inline void handlePCIeDevicePath(
+inline void handlePCIeDevicePath(
     const std::string& pcieDeviceId,
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
     const dbus::utility::MapperGetSubTreePathsResponse& pcieDevicePaths,
@@ -78,7 +78,7 @@
     messages::resourceNotFound(asyncResp->res, "PCIeDevice", pcieDeviceId);
 }
 
-static inline void getValidPCIeDevicePath(
+inline void getValidPCIeDevicePath(
     const std::string& pcieDeviceId,
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
     const std::function<void(const std::string& pcieDevicePath,
@@ -102,7 +102,7 @@
         });
 }
 
-static inline void handlePCIeDeviceCollectionGet(
+inline void handlePCIeDeviceCollectionGet(
     crow::App& app, const crow::Request& req,
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
     const std::string& systemName)
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 75ec8b9..fea45e9 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -965,7 +965,7 @@
  * in recursive calls to this function.
  */
 template <typename Callback>
-static void getInventoryItemsData(
+void getInventoryItemsData(
     std::shared_ptr<SensorsAsyncResp> sensorsAsyncResp,
     std::shared_ptr<std::vector<InventoryItem>> inventoryItems,
     std::shared_ptr<std::set<std::string>> invConnections, Callback&& callback,
@@ -1054,7 +1054,7 @@
  * @param callback Callback to invoke when connections have been obtained.
  */
 template <typename Callback>
-static void getInventoryItemsConnections(
+void getInventoryItemsConnections(
     const std::shared_ptr<SensorsAsyncResp>& sensorsAsyncResp,
     const std::shared_ptr<std::vector<InventoryItem>>& inventoryItems,
     Callback&& callback)
@@ -1137,7 +1137,7 @@
  * @param callback Callback to invoke when inventory items have been obtained.
  */
 template <typename Callback>
-static void getInventoryItemAssociations(
+void getInventoryItemAssociations(
     const std::shared_ptr<SensorsAsyncResp>& sensorsAsyncResp,
     const std::shared_ptr<std::set<std::string>>& sensorNames,
     Callback&& callback)
@@ -1670,7 +1670,7 @@
  * @param callback Callback to invoke when inventory items have been obtained.
  */
 template <typename Callback>
-static void
+inline void
     getInventoryItems(std::shared_ptr<SensorsAsyncResp> sensorsAsyncResp,
                       const std::shared_ptr<std::set<std::string>> sensorNames,
                       Callback&& callback)
diff --git a/redfish-core/lib/storage.hpp b/redfish-core/lib/storage.hpp
index 161cb6a..6f84524 100644
--- a/redfish-core/lib/storage.hpp
+++ b/redfish-core/lib/storage.hpp
@@ -605,7 +605,7 @@
         });
 }
 
-static void addAllDriveInfo(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+inline void addAllDriveInfo(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                             const std::string& connectionName,
                             const std::string& path,
                             const std::vector<std::string>& interfaces)
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 538b261..7f57e8d 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -243,7 +243,7 @@
 
 // Note that asyncResp can be either a valid pointer or nullptr. If nullptr
 // then no asyncResp updates will occur
-static void
+inline void
     softwareInterfaceAdded(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                            sdbusplus::message_t& m, task::Payload&& payload)
 {
