Porting GCC to your OS: Difference between revisions
Jump to navigation
Jump to search
[unchecked revision] | [unchecked revision] |
Content deleted Content added
A short description of what GCC needs from the standard library |
Rewrite page with some basic pointers instead of the useless stuff that was already there, the sysroot stuff is pretty important here, other articles covers the rest |
||
Line 2: | Line 2: | ||
{{In Progress}} |
{{In Progress}} |
||
* Read [[GCC Cross-Compiler]]. |
|||
:''Note that the [[GCC Cross-Compiler]] page is intended to include the information below (as well as filling in the To-Dos) once it is finished. Unless someone else does it first, I'll do so once my PDCLib is finished.'' - [[User:Solar|MartinBaute]] |
|||
* Make a [[OS Specific Toolchain]]. |
|||
* Read [[Hosted GCC Cross-Compiler]]. |
|||
⚫ | |||
* Cross-compile libgmp, libmpc, libmpfr and other dependencies with instructions in [[Cross-Porting Software]]. |
|||
* Likewise cross-compile [[Binutils]] and [[GCC]], but pass the special confifigure options <tt>--with-sysroot-build=/your/sysroot</tt> and <tt>--with-sysroot=/</tt>. The option <tt>--with-build-sysroot</tt> option uses that [[sysroot]] for the duration of the build, but the final program does not remember it. <tt>--with-sysroot=/</tt> should not be needed or should be set to the empty string, but some binutils/gcc versions are buggy and require it, which has the disadvantage the final toolchain might use <tt>//foo</tt> instead of <tt>/foo</tt>. You should ''only'' pass these options to the Binutils and GCC builds, some other packages also have a <tt>--with-sysroot</tt> option, but it instead means a libtool feature you should ''not'' use. |
|||
* Become self-hosting and complete [[Bare_Bones#Bare_Bones_II|Bare Bones II]]. Congratulations. |
|||
⚫ | |||
First, you should understand [[How kernel, compiler, and C library work together]]. If any of the next steps give you trouble, the information given in that document should give you an idea of what is missing. |
|||
* [[Binutils]] |
|||
* [[Cross-Porting Software]] |
|||
Next, you should build a [[GCC Cross-Compiler]] for your platform. |
|||
* [[GCC]] |
|||
* [[GCC Cross-Compiler]] |
|||
:''ToDo: elaborate on [[GCC]]'s platform description, and how to set up your own if you don't want to use an existing one.'' |
|||
* [[Hosted GCC Cross-Compiler]] |
|||
* [[OS Specific Toolchain]] |
|||
Then, you need a C standard library for your platform - at least those parts required by GCC. |
|||
* [[Sysroot]] |
|||
⚫ | |||
Finally, you would use the cross-compiler to compile [[GCC]] ''to run on your platform''. |
|||
Just to be sure, you would use that "native" [[GCC]] to compile itself (to be sure it could, and for weeding out any issues that might arise from cross-compilation). Congratulations, you are now what people call "self-hosted", i.e. you no longer need some other OS to do development work. (Provided you have a working editor for your platform.) |
|||
⚫ | |||
===External Links=== |
|||
*[http://www.scratchbox.org Scratch Box] |
|||
*[http://libosdk.berlios.de/wiki/index.php/Binutils LibOSDK Wiki] |
|||
[[Category:Compilers]] |
[[Category:Compilers]] |