This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC 4.7 on Android G++ Compiler Build Fail "This Linker Not Config To Use Sysroots"


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]