On Sun, Sep 28, 2014 at 4:52 AM, Brian Drummond
Post by Brian DrummondPost by Cyd HaseltonPost by Cyd HaseltonNo matter which config flags I use, the build keeps failing with
"/usr/local/bin/ld" this linker is not configured touse sysroots"
I've checked the specs for the ld at that location, and it does
support sysroot.
What am I doing wrong?
First question would be : are you using those config flags to build
binutils (to support sysroots) and install it, then build gcc?
Do I need to download the source for binutils and build it as well?
I can't be certain and I was hoping my dumb question would elicit "of
course" or "no" from the real experts...
But given the way binutils and the compiler have to interoperate, I
think it's likely that you do. That's the normal process when building
crosscompilers (which you aren't) so it may also be when you're
selecting unusual config options (which you are).
Binutils is much faster to build than gcc so it's not a difficult
question to answer for yourself. Naively, I'd feed the same set of
config options to binutils and let it ignore the ones it doesn't need.
Then having a "synchronised" version of ld etc in the same sysroot, you
could eliminate the --with-ld= option pointing at the other one.
If you make progress that way, keep the list informed.
- Brian
Initially sent this just to Brian, due to gmail's default quick reply settings:
****************************************************
As suggested, I've downloaded source for binutils 2.23.2, unpacked and
symlinked it in the gcc 4.7.0 source dir and re-run configure (minus
the --with-ld=no and --with-ld=/path/to/ld options. I also added the
BIONIC_LIBC #ifdef conditions to getpagesize.c in binutils/libiberty
to move past the error thrown by that file.
However, I'm now getting an error in bfd
in function bfd_ar_hdr_from_filesystem
../../../gcc-4.7.0/binutils/bfd/archive.c:1866:7: error: pointer
targets in passing argument 1 of 'time' differ in signedness
[-Werror-pointer-sign]
This is followed by
/usr/local/sysroot/usr/include/time.h:40:17: note: expected 'time_t
*' but argument is of type 'long unsigned int*'
I vaguely remember having to make some modifications to a source file
when porting GCC 4.8 to android, but it's been a while...I'd have to
dig up prior posts and resurrect an archived VM.
Any ideas before I do just that?
UPDATE: Question above answered; there's a patch available for
bfd/archive.c that involves a cast (?) for the problematic function,
but I've now run into another error in binutils/bucomm.c
..binutils/bucomm.c: In function 'make_tempdir'
..binutils/bucomm.c:532:3: error: implicit declaration of function
'mkdtemp' [-Werror=implicit-function-declaration]
..binutils/bucomm.c:532:3: error: return makes pointer from integer
without a cast [-Werror]
Looks like I'll be digging back into my C handbook. If someone knows
of an existing patch, please save me from doing this.