diff --git a/src/configure.in b/src/configure.in
index 903d2d91ba3949441ae9042a79bb8b2c08753eed..5d1df256f224152719fe98a6bb1441a7cf60a9a1 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-AC_REVISION("$Id: configure.in,v 1.864 2004/12/30 13:43:45 grubba Exp $")
+AC_REVISION("$Id: configure.in,v 1.865 2005/01/03 13:17:07 agehall Exp $")
 AC_INIT(interpret.c)
 AC_CONFIG_HEADER(machine.h)
 
@@ -4720,7 +4720,14 @@ MY_CHECK_FUNCTION(isunordered,
   exit(0);
 ])
 ########################################################################
-
+MY_CHECK_FUNCTION(dlinit,
+[
+#include <dlfcn.h>
+], [
+  dlinit();
+  exit(0);
+})
+########################################################################
 MY_CHECK_FUNCTION(dlopen,
 [
 #include <dlfcn.h>
diff --git a/src/main.c b/src/main.c
index e6b7b520ec8201029974cba7df1df7dfdb05f5e3..b170c6419263175c0a0e9e185b3bf8c53f216711 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: main.c,v 1.222 2005/01/01 17:35:54 grubba Exp $
+|| $Id: main.c,v 1.223 2005/01/03 13:17:07 agehall Exp $
 */
 
 #include "global.h"
@@ -250,10 +250,12 @@ int main(int argc, char **argv)
   find_lib_dir(argc, argv);
 
 #ifdef LIBPIKE
+#ifdef HAVE_DLINIT
   if (!dlinit()) {
     fprintf(stderr, "dlinit failed.\n");
     exit(1);
   }
+#endif /* HAVE_DLINIT */
 
   if (!(libpike = dlopen(libpike_name, RTLD_NOW))) {
     const char *err = dlerror();
diff --git a/src/pike_embed.h b/src/pike_embed.h
index 0eb70db7f39e9dbc90477f52fea14fa4965078da..cbe98e29bc47b0912e9c584f95ba3d0e3a7bfd64 100644
--- a/src/pike_embed.h
+++ b/src/pike_embed.h
@@ -1,5 +1,5 @@
 /*
- * $Id: pike_embed.h,v 1.4 2005/01/01 17:35:54 grubba Exp $
+ * $Id: pike_embed.h,v 1.5 2005/01/03 13:17:07 agehall Exp $
  *
  * Pike embedding API.
  *
@@ -65,4 +65,6 @@ DECLSPEC(noreturn) void pike_do_exit(int num) ATTRIBUTE((noreturn));
 void pike_push_argv(int argc, char **argv);
 void pike_push_env(void);
 
+extern char libpike_name[];
+
 #endif /* PIKE_EMBED_H */