This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug driver/35532] Native GCC no longer searches $prefix/lib for startfiles when run from $objdir
- From: "gschafer at zip dot com dot au" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Mar 2008 06:41:29 -0000
- Subject: [Bug driver/35532] Native GCC no longer searches $prefix/lib for startfiles when run from $objdir
- References: <bug-35532-5337@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #7 from gschafer at zip dot com dot au 2008-03-16 06:41 -------
(In reply to comment #6)
> As a workaround can you try using all of the sysroot framework?
Thanks for looking at this Carlos. But the sysroot stuff is not really suited
to a non /usr layout. For example, with my --prefix=/temptools scenario, the
sysrooted toolchain will go looking for:
/temptools/usr/include
/temptools/usr/lib
/temptools/lib
whereas my layout is:
/temptools/include
/temptools/lib
And just to reiterate, according to http://gcc.gnu.org/install/configure.html
the sysroot options apply *only* when building cross compilers. I know that
Alan Modra said he now builds sysrooted compilers on native hosts, so maybe the
GCC install docs need to be changed?
> Configure with
> --with-sysroot=/mnt/foo and --with-build-sysroot=/mnt/foo. Build with
> LDFLAGS_FOR_TARGET="--sysroot=/mnt/foo" and
> CPPFLAGS_FOR_TARGET="--sysroot=/mnt/foo".
Ok, I went ahead and tried with the above. The build system appears not to care
that the sysroot framework was in use on a native build. Great.
However, it doesn't work for my scenario. The build crapped out somewhere in
fixincludes:
The directory that should contain system headers does not exist:
/temptools/usr/include
make[2]: *** [stmp-fixinc] Error 1
If I fudge past that error by doing a `mkdir /temptools/usr/include', it gets a
little further but craps out again:
In file included from ../../../gcc-4.3.0/libgcc/../gcc/libgcc2.c:33:
../../../gcc-4.3.0/libgcc/../gcc/tsystem.h:90:19: error: stdio.h: No such file
or directory
../../../gcc-4.3.0/libgcc/../gcc/tsystem.h:93:23: error: sys/types.h: No such
file or directory
../../../gcc-4.3.0/libgcc/../gcc/tsystem.h:96:19: error: errno.h: No such file
or directory
../../../gcc-4.3.0/libgcc/../gcc/tsystem.h:103:20: error: string.h: No such
file or directory
../../../gcc-4.3.0/libgcc/../gcc/tsystem.h:104:20: error: stdlib.h: No such
file or directory
../../../gcc-4.3.0/libgcc/../gcc/tsystem.h:105:20: error: unistd.h: No such
file or directory
../../../gcc-4.3.0/libgcc/../gcc/tsystem.h:111:18: error: time.h: No such file
or directory
make[2]: *** [_muldi3.o] Error 1
As mentioned above, the sysroot stuff is clearly designed for a file system
layout with /usr and DESTDIR style installs ie:
/sysroot/usr/include
/sysroot/usr/lib
/sysroot/lib
Oh well. T'was worth a try.
> I'm reading through the DIY instructions right now to make sense of your
> bootstrap process.
I have a feeling that slotting in a -B $prefix/lib somewhere in the
*FLAGS_FOR_TARGET could potentially solve my problem. Except that -B currently
doesn't process the multilibs.. damn.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35532