diff --git a/configure b/configure
index a98f0789..8517485f 100755
--- a/configure
+++ b/configure
@@ -26,6 +26,7 @@ libdir=""
 tccdir=""
 includedir=""
 mandir=""
+sysroot=""
 cross_prefix=""
 cc="gcc"
 host_cc="gcc"
@@ -102,6 +103,8 @@ for opt do
   ;;
   --mandir=*) mandir=`echo $opt | cut -d '=' -f 2`
   ;;
+  --sysroot=*) sysroot=`echo $opt | cut -d '=' -f 2`
+  ;;
   --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
   ;;
   --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
@@ -218,6 +221,7 @@ echo ""
 echo "Advanced options (experts only):"
 echo "  --source-path=PATH       path of source code [$source_path]"
 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
+echo "  --sysroot=PREFIX         prepend PREFIX to library/include paths []"
 echo "  --cc=CC                  use C compiler CC [$cc]"
 echo "  --make=MAKE              use specified make [$make]"
 echo ""
@@ -267,6 +271,7 @@ echo "Library directory   $libdir"
 echo "Include directory   $includedir"
 echo "Manual directory    $mandir"
 echo "Doc directory       $docdir"
+echo "Target root prefix  $sysroot"
 echo "Source path      $source_path"
 echo "C compiler       $cc"
 echo "make             $make"
@@ -287,6 +292,7 @@ echo "libdir=$libdir" >> config.mak
 echo "includedir=$includedir" >> config.mak
 echo "mandir=$mandir" >> config.mak
 echo "docdir=$docdir" >> config.mak
+echo "#define CONFIG_SYSROOT \"$sysroot\"" >> $TMPH
 echo "#define CONFIG_TCCDIR \"$tccdir\"" >> $TMPH
 echo "MAKE=$make" >> config.mak
 echo "CC=$cc" >> config.mak
diff --git a/tcc.c b/tcc.c
index aa346588..5252c443 100644
--- a/tcc.c
+++ b/tcc.c
@@ -113,7 +113,7 @@ typedef int BOOL;
 
 /* path to find crt1.o, crti.o and crtn.o. Only needed when generating
    executables or dlls */
-#define CONFIG_TCC_CRT_PREFIX "/usr/lib"
+#define CONFIG_TCC_CRT_PREFIX CONFIG_SYSROOT "/usr/lib"
 
 #define INCLUDE_STACK_SIZE  32
 #define IFDEF_STACK_SIZE    64
@@ -10190,9 +10190,9 @@ TCCState *tcc_new(void)
     
 #ifndef TCC_TARGET_PE
     /* default library paths */
-    tcc_add_library_path(s, "/usr/local/lib");
-    tcc_add_library_path(s, "/usr/lib");
-    tcc_add_library_path(s, "/lib");
+    tcc_add_library_path(s, CONFIG_SYSROOT "/usr/local/lib");
+    tcc_add_library_path(s, CONFIG_SYSROOT "/usr/lib");
+    tcc_add_library_path(s, CONFIG_SYSROOT "/lib");
 #endif
 
     /* no section zero */
@@ -10469,8 +10469,8 @@ int tcc_set_output_type(TCCState *s, int output_type)
         /* default include paths */
         /* XXX: reverse order needed if -isystem support */
 #ifndef TCC_TARGET_PE
-        tcc_add_sysinclude_path(s, "/usr/local/include");
-        tcc_add_sysinclude_path(s, "/usr/include");
+        tcc_add_sysinclude_path(s, CONFIG_SYSROOT "/usr/local/include");
+        tcc_add_sysinclude_path(s, CONFIG_SYSROOT "/usr/include");
 #endif
         snprintf(buf, sizeof(buf), "%s/include", tcc_lib_path);
         tcc_add_sysinclude_path(s, buf);