building every released version of GCC starting with 4.1.2, with appropriate matching glibc

Toebs Douglass toby@winterflaw.net
Thu Apr 6 20:58:00 GMT 2017


Hi, everyone.

I am the author of a library of a portable, platform-independent
lock-free data structures, written in C.

I wish to compile the library, the test application and the benchmark
application on every released version of GCC, starting with version
4.1.2, using the appropriate glibc.

Unless I do this, I cannot know the code compiles and runs on the GCCs
end-users may be using.

I have emailed here both the GCC and glibc help mailing lists, as I have
seen that achieving this goal is something which involves a good deal of
knowledge in both domains.

I have read many times the suggestion to use a VM and an old distro;
this is not viable, as the nature of lock-free is that race conditions
are a major concern, and so the test machines need to be going flat-out,
not in a VM.  Moreover, benchmarking on a VM is in many ways inherently
undesirable.

I would like to say lest readers imagine I am lightly asking for help
that although I have a day job, and so cannot work on this all the time,
I have spent now nine weeks trying to achieve this goal.

I am to begin with trying only to build on my system the same version of
GCC as the system GCC.  I am aware there are issues involved in trying
to compile much earlier version of GCC, where stepping-stone GCCs must
be made, but this is for the future; right now, I simply want to get *a*
GCC compiled.  I will in the future also if I can be making native
builds on arm, aarch64 and mipsel, but this also is not for thinking
about now.

My current high-level understanding is as follows;

1. create a directory to use as the sysroot
2. build binutils using the system native GCC, install to the sysroot
3. export the linux headers to sysroot
4. export glibc headers to sysroot
5. build GCC the first time (with appropriate version of mpfr, gmp, mpc)
and the system glibc
6. now build glibc with the GCC from #5
7. build GCC the second time, using the glibc from #6
8. and we're done

If there are mistakes here, and if they can be sorted out, then we can
turn to more detail and the actual commands I'm issuing.



More information about the Gcc-help mailing list