diff --git a/configure.in b/configure.in
index 237846f..d386bdd 100644
--- a/configure.in
+++ b/configure.in
@@ -907,26 +907,6 @@ else
 	   THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_BEOS_THREADS"
        ;;
        *linux*)
-           if test "${GCC}" = "yes" ; then
-	       GCC_VERSION=`${CC} --version | head -1 | awk '{print $3}'`
-	       GCC_MAJOR=`echo ${GCC_VERSION} | sed 's+\..*++'`
-	       GCC_MEDIUM=`echo ${GCC_VERSION} | sed 's+[[0-9]]*\.++' | sed 's+\..*++'`
-	       if test "${THREAD_LIBS}" = "-lpthread" ; then
-	           if expr ${GCC_MEDIUM} \> 2 \& ${GCC_MAJOR} = 3 > /dev/null
-		   then
-		       THREAD_LIBS=""
-		       BASE_THREAD_LIBS="-lpthread"
-		   else
-		   if expr ${GCC_MAJOR} \> 3 > /dev/null
-		   then
-		       THREAD_LIBS=""
-		       BASE_THREAD_LIBS="-lpthread"
-		   else
-		       echo old GCC disabling weak symbols for pthread
-		   fi
-		   fi
-	       fi
-	   fi
        ;;
     esac
     if test "$WITH_THREADS" = "1" ; then
diff --git a/python/setup.py b/python/setup.py
index f80a66c..8a6c969 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -8,7 +8,7 @@ from distutils.core import setup, Extension
 # Below ROOT, we expect to find include, include/libxml2, lib and bin.
 # On *nix, it is not needed (but should not harm), 
 # on Windows, it is set by configure.js.
-ROOT = r'/usr' 
+ROOT = r'/usr/local' 
 
 # Thread-enabled libxml2
 with_threads = 1
diff --git a/threads.c b/threads.c
index 98fd2c2..5bd0532 100644
--- a/threads.c
+++ b/threads.c
@@ -51,42 +51,25 @@ static int libxml_is_threaded = -1;
 #ifdef linux
 #if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (__GNUC__ > 3)
 extern int pthread_once (pthread_once_t *__once_control,
-                         void (*__init_routine) (void))
-	   __attribute((weak));
-extern void *pthread_getspecific (pthread_key_t __key)
-	   __attribute((weak));
+                         void (*__init_routine) (void));
+extern void *pthread_getspecific (pthread_key_t __key);
 extern int pthread_setspecific (pthread_key_t __key,
-                                __const void *__pointer)
-	   __attribute((weak));
+                                __const void *__pointer);
 extern int pthread_key_create (pthread_key_t *__key,
-                               void (*__destr_function) (void *))
-	   __attribute((weak));
-extern int pthread_key_delete (pthread_key_t __key)
-	   __attribute((weak));
-extern int pthread_mutex_init ()
-	   __attribute((weak));
-extern int pthread_mutex_destroy ()
-	   __attribute((weak));
-extern int pthread_mutex_lock ()
-	   __attribute((weak));
-extern int pthread_mutex_unlock ()
-	   __attribute((weak));
-extern int pthread_cond_init ()
-	   __attribute((weak));
-extern int pthread_cond_destroy ()
-	   __attribute((weak));
-extern int pthread_cond_wait ()
-	   __attribute((weak));
-extern int pthread_equal ()
-	   __attribute((weak));
-extern pthread_t pthread_self ()
-	   __attribute((weak));
-extern int pthread_key_create ()
-	   __attribute((weak));
-extern int pthread_key_delete ()
-	   __attribute((weak));
-extern int pthread_cond_signal ()
-	   __attribute((weak));
+                               void (*__destr_function) (void *));
+extern int pthread_key_delete (pthread_key_t __key);
+extern int pthread_mutex_init ();
+extern int pthread_mutex_destroy ();
+extern int pthread_mutex_lock ();
+extern int pthread_mutex_unlock ();
+extern int pthread_cond_init ();
+extern int pthread_cond_destroy ();
+extern int pthread_cond_wait ();
+extern int pthread_equal ();
+extern pthread_t pthread_self ();
+extern int pthread_key_create ();
+extern int pthread_key_delete ();
+extern int pthread_cond_signal ();
 #endif
 #endif /* linux */
 #endif /* __GNUC__ */
