This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: GCC 4.7 on Android G++ Compiler Build Fail "This Linker Not Config To Use Sysroots"
- From: Cyd Haselton <chaselton at gmail dot com>
- To: "gcc-help at gcc dot gnu dot org" <gcc-help at gcc dot gnu dot org>
- Date: Sun, 28 Sep 2014 12:14:35 -0500
- Subject: Re: GCC 4.7 on Android G++ Compiler Build Fail "This Linker Not Config To Use Sysroots"
- Authentication-results: sourceware.org; auth=none
- References: <CAHu5PrbLHCqsq-MGmgHcdex0Em_m7ucKGGb=auK2CJc1KPDdDQ at mail dot gmail dot com> <1411897967 dot 4736 dot 9 dot camel at Gannet dot Four>
On Sun, Sep 28, 2014 at 4:52 AM, Brian Drummond
<brian@shapes.demon.co.uk> wrote:
> On Sat, 2014-09-27 at 18:33 -0500, Cyd Haselton wrote:
>> On Sat, Sep 27, 2014 at 6:46 AM, <gcc-help-digest-help@gcc.gnu.org> wrote:
>
>> > No 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.