--with-sysroot and --with-build-sysroot

Marco Trudel mtrudel@gmx.ch
Fri Mar 9 15:36:00 GMT 2007


Anyone?

Marco Trudel wrote:
> Hey all
> 
> I don't really understand the meaning and difference of --with-sysroot 
> and --with-build-sysroot. From http://gcc.gnu.org/install/configure.html:
> 
>  > --with-sysroot=dir
>  > Tells GCC to consider dir as the root of a tree that contains a
>  > (subset of) the root filesystem of the target operating system.
> 
> The GCC that is used to compile the current GCC source or the final 
> compiled GCC later at runtime? I assume for both.
> 
> 
>  > Target
>  > system headers, libraries and run-time object files will be searched
>  > in there.
> 
> I'm compiling a build=i686-pc-linux-gnu host=i686-pc-linux-gnu 
> target=i686-pc-linux-gnu. I put glibc and glibc-devel into sysroot. This 
> worked with GCC 4.2 but fails with GCC 4.3 because "linux/limits.h" 
> can't be found [1].
> I'd say GCC 4.3 does the correct thing but how then was GCC 4.2 able to 
> compile the setup? I always assumed that "--with-sysroot" is for the 
> created compiler and "--with-build-sysroot" for the compiler compiling 
> the new compiler.
> 
> Also I'm doing a build=i686-pc-linux-gnu host=i686-pc-mingw32 
> target=i686-pc-linux-gnu compilation with also --with-sysroot set and 
> containing glibc and glibc-devel. That works with GCC 4.2 and GCC 4.3. I 
> would have assumed that GCC 4.3 also fails because it already fails for 
> a host=i686-pc-linux-gnu.
> 
> 
>  > --with-build-sysroot=dir
>  > Tells GCC to consider dir as the system root (see --with-sysroot)
>  > while building target libraries, instead of the directory specified
>  > with --with-sysroot.
> 
> So this overwrites --with-sysroot for target libraries. What is 
> --with-sysroot then left to be used for? target binaries? Other things?
> 
> 
>  > This option is only useful when you are already
>  > using --with-sysroot. You can use --with-build-sysroot when you are
>  > configuring with --prefix set to a directory that is different from
>  > the one in which you are installing GCC and your target libraries.
> 
> So assumed I have:
> --prefix=/home/me/gcc-tmp
> --with-sysroot=/home/me/gcc-tmp/sysroot
> 
> But will finally install it into /home/me/gcc. What do I have to set 
> --with-build-sysroot to? What for? The sysroot will be found relative to 
> the GCC binaries because it is a subdirectory of the prefix.
> 
> 
>  > This option affects the system root for the compiler used to build
>  > target libraries (which runs on the build system); it does not affect
>  > the compiler which is used to build GCC itself.
> 
> And --with-sysroot is used for both? Then for my setup (having sys-root 
> as a subdir of prefix) makes --with-build-sysroot superfluous?
> Where then makes --with-build-sysroot sense? Assumed I do:
> --prefix=/home/me/gcc-tmp
> --with-sysroot=/home/me/sysroot
> Won't it be found absolutely when moving gcc to /home/me/gcc? Or do I 
> still have to set build-sysroot to /home/me/sysroot?
> 
> 
> thanks
> Marco
> 
> [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30832
> 



More information about the Gcc-help mailing list