diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 1f06d19388e70bebf032c2f4daa56bd0aae0c1de..467cfc18d77504fcf00e2cb0df9c59f7b5ceb03c 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -6,7 +6,7 @@
 # Copyright (c) 1998, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.21 2000/06/28 18:29:13 petere Exp $
+#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.22 2000/07/07 01:23:43 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -143,9 +143,9 @@ endif
 
 ifeq ($(PORTNAME), linux)
   shlib			:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
-  LDFLAGS_SL		:= -Bdynamic -shared -soname $(shlib)
-  LDFLAGS_ODBC		:= -Bsymbolic -lc -lm
-  SHLIB_LINK		+= -lc
+  LD			:= $(CC)
+  LDFLAGS_SL		:= -shared -Wl,-soname,$(shlib)
+  LDFLAGS_ODBC		:= -lm
   CFLAGS		+= $(CFLAGS_SL)
 endif
 
diff --git a/src/interfaces/odbc/psqlodbc.c b/src/interfaces/odbc/psqlodbc.c
index 0df56ee1e7614cfab454ae9a304f80a98a02d26f..a4598383fcd6c0073807b65c002761b575b30c25 100644
--- a/src/interfaces/odbc/psqlodbc.c
+++ b/src/interfaces/odbc/psqlodbc.c
@@ -33,8 +33,6 @@
 
 GLOBAL_VALUES globals;
 
-BOOL _init(void);
-BOOL _fini(void);
 RETCODE SQL_API SQLDummyOrdinal(void);
 
 #ifdef WIN32
@@ -97,6 +95,20 @@ WSADATA wsaData;
 #define FALSE	(BOOL)0
 #endif
 
+#ifdef __GNUC__
+
+/* This function is called at library initialization time.  */
+
+static BOOL
+__attribute__((constructor))
+init(void)
+{
+	getGlobalDefaults(DBMS_NAME, ODBCINST_INI, FALSE);
+	return TRUE;
+}
+
+#else
+
 /* These two functions do shared library initialziation on UNIX, well at least
  * on Linux. I don't know about other systems.
  */