Kai Ruottu wrote: > Kaz Kylheku wrote: > > GCC is version 4.1.1 > > Binutils 2.17 > > Glibc is CVS head. > > > > When configuring gcc, I used --with-sysroot=/path/to/sysroot, > > where glibc is installed under usr/. The header files are > > found correctly. > > > What about the binutils, was the same '--with-sysroot=' > given in their configure? I did rebuild binutils using --with-sysroot, only because the they complain that they were not built with sysroot support and bail out. It doesn't matter at all what the --with-sysroot argument is for configuring binutils. You can even omit it. If I take the non-working collect2 command line (captured from gcc -v), and edit out the --sysroot, it links! It's the --sysroot being passed down to ld that is screwing things up. The gcc front end is already passing nice absolute path names down for everything: the crtN modules, the -L option to find libs, etc. I think I just have to figure out the way to configure gcc to do all that exactly as it is doing now, but not generate the --sysroot option. I really want to avoid patching it. There is an Autoconf check in gcc to test whether the linker understands --sysroot. That should have worked the first time when I built gcc using --with-sysroot with binutils compiled without sysroot. Ah, but the problem is that the configure script only runs "ld --help" and greps that for --sysroot. If you build ld without sysroot, it still has that option listed in its --help output. Oops! > Finding the headers happens with the built-in 'cpp' in the > 'cc1', 'cc1plus' etc. real compilers, so only the GCC config > options will have any influence to this. > > > When the linker is invoked, it is given > > > > --sysroot=/path/to/sysroot. > > > Maybe this option is aimed for a 'ld' which was NOT configured > using the '--with-sysroot='... Shrug. I don't see the point of giving a sysroot to a tool, and at the same time, giving it absolute path names to all of the objects and directories. It would perhaps make sense if the paths were relative to the root. > I myself haven't used the '--with-sysroot=', only made > symlinks like : > > $prefix/$target/include -> $sysroot/usr/include > $prefix/$target/lib -> $sysroot/usr/lib I thought about symlinks, but the problem is they are too much of a bandaid. This stuff is supposed to work, right? If we can't get gcc to cleanly play along with binutils, where are we? :)