Page 1 of 1
Building gcc in cygwin for cross-compiling for MIPS linux
Posted: Wed Sep 20, 2017 2:51 pm
by alikim
Hi,
I'm following the guide here
http://wiki.osdev.org/GCC_Cross-Compiler, my target being
and I'm stuck at
which fails with
Code: Select all
In file included from ../../../gcc-7.2.0/libgcc/gthr.h:148:0,
from ../../../gcc-7.2.0/libgcc/libgcov-interface.c:27:
./gthr-default.h:35:10: fatal error: pthread.h: No such file or directory
#include <pthread.h>
^~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:915: _gcov_dump.o] Error 1
make[1]: Leaving directory '/home/alikim/src/build-gcc/mipsel-unknown-linux-gnu/libgcc'
make: *** [Makefile:11866: all-target-libgcc] Error 2
What do I need to do to fix this error?
Also, since I'm not building a OS, just a program that needs to run under linux, will
limit my ability to use standard C libraries in my code?
Thank you!
Re: Building gcc in cygwin for cross-compiling for MIPS linu
Posted: Wed Sep 20, 2017 3:39 pm
by Korona
The wiki instructions are for building a freestanding compiler. If you want a hosted compiler, you'll need to build --with-sysroot and install the libc headers into the sysroot before building libgcc, libstdc++ and other GCC support libraries. You cannot use --without-headers and expect to use the C standard library.
Re: Building gcc in cygwin for cross-compiling for MIPS linu
Posted: Wed Sep 20, 2017 5:14 pm
by alikim
I'm following the wiki instructions for building a freestanding compiler, it's not what I want but it's a start...
The point is, it doesn't work. I copied all the instructions from the wiki and it fails as I described above, I'd like to know why, that's my question.
As per wiki, binutils were compiled with --with-sysroot and gcc with --without-headers.
Re: Building gcc in cygwin for cross-compiling for MIPS linu
Posted: Wed Sep 20, 2017 5:24 pm
by Korona
Let me reiterate: You cannot build a Linux compiler --without-headers. You need to pass --with-sysroot to the GCC build and compile your libc to that directory (using your cross compiler, that was built during all-gcc), before building libgcc.
Re: Building gcc in cygwin for cross-compiling for MIPS linu
Posted: Wed Sep 20, 2017 6:39 pm
by alikim
Oh god... I mean thank you!
Re: Building gcc in cygwin for cross-compiling for MIPS linu
Posted: Sun Nov 04, 2018 11:07 pm
by lisanke
If, as was stated above, you can Not build a gcc cross-compiler --without-headers... Why does the
https://wiki.osdev.org/GCC_Cross-Compiler#GCC Instructions for building a cross-compiler (target with no libc) have us try??? Just trying to understand... is it a right of passage? :-p I'm trying to build a cross compiler on a windows machine under cygwin and I can find pthread.h ... the make all-libgcc-target can't find it because we told configure to not find it... but the build abends. So, what I think is asked here and in many other places is, why would an instruction on building a GCC cross compiler intentional (or accidentally for years) produce an outcome know to fail? It makes no sense... I can move on to the next set with sysroot but I like to understand what went wrong when an expected outcome doesn't happen... after years of development, it's just my way.
Thanks to anyone with sincere comments that can explain.
Re: Building gcc in cygwin for cross-compiling for MIPS linu
Posted: Mon Nov 05, 2018 1:22 am
by linguofreak
lisanke wrote:If, as was stated above, you can Not build a gcc cross-compiler --without-headers... Why does the
https://wiki.osdev.org/GCC_Cross-Compiler#GCC Instructions for building a cross-compiler (target with no libc) have us try??? Just trying to understand... is it a right of passage? :-p I'm trying to build a cross compiler on a windows machine under cygwin and I can find pthread.h ... the make all-libgcc-target can't find it because we told configure to not find it... but the build abends. So, what I think is asked here and in many other places is, why would an instruction on building a GCC cross compiler intentional (or accidentally for years) produce an outcome know to fail? It makes no sense... I can move on to the next set with sysroot but I like to understand what went wrong when an expected outcome doesn't happen... after years of development, it's just my way.
Thanks to anyone with sincere comments that can explain.
It's not that you can't build a gcc cross-compiler --without-headers, it's that the wiki directions are for a different type of cross-compiler to be used for different purposes. The wiki directions are for building a cross compiler for kernel development, generally on the same architecture. The default configuration of gcc assumes that you are building applications that will be linked with a C library. To avoid certain pitfalls in kernel programming, you need to build a compiler that won't make those assumptions. But you're trying to build a cross compiler that will build Linux applications against glibc for MIPS on a different OS and architecture. For that, gcc needs to make all of the assumptions that the cross compiler setup on the wiki needs to avoid.
Korona didn't say you can't build a gcc *cross-compiler* --without-headers, he said that you can't build a *Linux compiler* without headers (strictly speaking, if you were building a compiler for an environment that used a Linux kernel, but where the system runtime was an oddball library that did not implement the C standard library, you would use --without-headers as well, but that doesn't really apply to what you're trying to do).
Re: Building gcc in cygwin for cross-compiling for MIPS linu
Posted: Mon Nov 05, 2018 1:24 am
by alexfru
The latest MIPS toolchains are
here.
Windows and Linux binaries, targeting Linux or bare metal.