diff --git a/src/dynamic_load.c b/src/dynamic_load.c
index b903f41d1bd55e2acdddfe03d44f13306956d0d5..12d7f39892070c37d1a6e377cc7d27af5c7f0d04 100644
--- a/src/dynamic_load.c
+++ b/src/dynamic_load.c
@@ -71,7 +71,13 @@ void f_load_module(INT32 args)
 
 #ifdef HAVE_DLOPEN
   init=(modfun)dlsym(module, "pike_module_init");
+  if (!init) {
+    init=(modfun)dlsym(module, "_pike_module_init");
+  }
   exit=(modfun)dlsym(module, "pike_module_exit");
+  if (!exit) {
+    exit=(modfun)dlsym(module, "_pike_module_exit");
+  }
 
 #elif defined(USE_DLD)
   init = (modfun)dld_get_func("pike_module_init");