diff --git a/configure b/configure
index d8e90b30cc..40829efb68 100755
--- a/configure
+++ b/configure
@@ -47209,25 +47209,34 @@ if test "${wx_cv_gcc_pch_bug+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-            wx_cv_gcc_pch_bug=no
-            echo 'const wchar_t test_var[] = L"wide string";' > conftest.h
+            echo '#include <stdio.h>
+                  const wchar_t test_var[] = L"awidetest";' > conftest.h
+
+            echo '#include "conftest.h"
+                  int main()
+                  {
+                     printf("%ls\n", test_var);
+                     return 0;
+                  }' > conftest.cpp
+
+            wx_cv_gcc_pch_bug="pch not supported"
 
             if $CXX conftest.h >/dev/null 2>&1
             then
-                {
-                    echo '#include "conftest.h"'
-                    echo 'const wchar_t *test() { return test_var; }'
-                } > conftest.cpp
+                wx_cv_gcc_pch_bug=
 
-                if $CXX -c -o conftest.o conftest.cpp >/dev/null 2>&1
+                if $CXX -o conftest conftest.cpp >/dev/null 2>&1
                 then
-                    tr -dc 'a-z' < conftest.o |
-                        grep 'widestring' >/dev/null ||
+                    if tr -dc '[a-z]' < conftest | grep awidetest >/dev/null
+                    then
+                        wx_cv_gcc_pch_bug=no
+                    else
                         wx_cv_gcc_pch_bug=yes
+                    fi
                 fi
             fi
 
-            rm -f conftest.h conftest.gch conftest.cpp conftest.o
+            rm -f conftest.h conftest.gch conftest.cpp conftest
 
 fi
 echo "$as_me:$LINENO: result: $wx_cv_gcc_pch_bug" >&5
diff --git a/configure.in b/configure.in
index 6b6c71f37b..53af4d850a 100644
--- a/configure.in
+++ b/configure.in
@@ -7618,25 +7618,34 @@ then
         [for gcc precompiled header bug],
         [wx_cv_gcc_pch_bug],
         [[
-            wx_cv_gcc_pch_bug=no
-            echo 'const wchar_t test_var[] = L"wide string";' > conftest.h
+            echo '#include <stdio.h>
+                  const wchar_t test_var[] = L"awidetest";' > conftest.h
+
+            echo '#include "conftest.h"
+                  int main()
+                  {
+                     printf("%ls\n", test_var);
+                     return 0;
+                  }' > conftest.cpp
+
+            wx_cv_gcc_pch_bug="pch not supported"
 
             if $CXX conftest.h >/dev/null 2>&1
             then
-                {
-                    echo '#include "conftest.h"'
-                    echo 'const wchar_t *test() { return test_var; }'
-                } > conftest.cpp
+                wx_cv_gcc_pch_bug=
 
-                if $CXX -c -o conftest.o conftest.cpp >/dev/null 2>&1
+                if $CXX -o conftest conftest.cpp >/dev/null 2>&1
                 then
-                    tr -dc 'a-z' < conftest.o |
-                        grep 'widestring' >/dev/null ||
+                    if tr -dc '[a-z]' < conftest | grep awidetest >/dev/null
+                    then
+                        wx_cv_gcc_pch_bug=no
+                    else
                         wx_cv_gcc_pch_bug=yes
+                    fi
                 fi
             fi
 
-            rm -f conftest.h conftest.gch conftest.cpp conftest.o
+            rm -f conftest.h conftest.gch conftest.cpp conftest
         ]])
 
     if test "$wx_cv_gcc_pch_bug" = yes; then