diff --git a/src/app/mumta.cpp b/src/app/mumta.cpp
index 4dad2ad4c38ebb32b1730fbe6539c3a016e8fc76..296e09ac2d8d89054e12936dc5d668653cd1ac53 100644
--- a/src/app/mumta.cpp
+++ b/src/app/mumta.cpp
@@ -1,10 +1,40 @@
 #include <chrono>
 #include <cstdint>
+#include <iostream>
 #include <thread>
 
+#include <ev++.h>
+
 #include "service/daemonctl.hpp"
 
+bool check_version_libev() {
+    auto ev_major{ev::version_major()};
+    auto ev_minor{ev::version_minor()};
+
+    constexpr auto exp_major{EV_VERSION_MAJOR};
+    constexpr auto exp_minor{EV_VERSION_MINOR};
+
+    std::cout << "Checking dependency: libev: detected " << ev_major << "." << ev_minor << ", compiled " << exp_major << "." << exp_minor << "\n" << std::flush;
+
+    if(ev_major != exp_major) {
+        std::cerr << "Checking dependency: libev: failed version check: Major API version mismatch.\n" << std::flush;
+        return false;
+    }
+
+    if(ev_minor < exp_minor) {
+        std::cerr << "Checking dependency: libev: failed version check: Minor API version too old.\n" << std::flush;
+        return false;
+    }
+
+    return true;
+}
+
 int main() {
+    dctl_status_msg("Checking environment");
+    if(!check_version_libev()) {
+        return 1;
+    }
+
     dctl_status_msg("Initializing");
     dctl_status_msg("Reading configuration");
     dctl_status_msg("Initializing network");
@@ -30,4 +60,6 @@ int main() {
     dctl_status_msg("Storing active caches");
     dctl_status_msg("Closing active sockets");
     dctl_status_msg("Inactive");
+
+    return 0;
 }
diff --git a/src/app/mumta.ldflags b/src/app/mumta.ldflags
index c205321e11519249597afe086d06d17585ce73ff..5cee85c8c4c37ef4f91f3d6e2af590506200ea54 100644
--- a/src/app/mumta.ldflags
+++ b/src/app/mumta.ldflags
@@ -1 +1,3 @@
 `pkg-config --cflags --libs libsystemd`
+-lev
+-pthread