Porting GCC to your OS: Difference between revisions
Jump to navigation
Jump to search
[unchecked revision] | [unchecked revision] |
Content added Content deleted
(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:
{{In Progress}}
* Read [[GCC Cross-Compiler]].
* 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.
== See Also ==▼
* [[Binutils]]
* [[Cross-Porting Software]]
* [[GCC]]
* [[GCC Cross-Compiler]]
* [[Hosted GCC Cross-Compiler]]
* [[OS Specific Toolchain]]
* [[Sysroot]]
▲To do this you need a [[C Library]] for your OS. GCC is fairly portable and needs the C standard library, and some extensions from POSIX. It needs fork and exec, for instance, to run the assembler and linker. You will need a C++ standard library (such as libstdc++) as GCC is now written in [[C++]].
▲==See Also==
[[Category:Compilers]]
|
Revision as of 16:32, 14 October 2017
Difficulty level |
---|
Master |
This page is a work in progress.
This page may thus be incomplete. Its content may be changed in the near future.
- Read GCC Cross-Compiler.
- Make a OS Specific Toolchain.
- Read Hosted GCC Cross-Compiler.
- Have a sufficient C Library. GCC is fairly portable and needs the C standard library, and some extensions from POSIX. It needs fork and exec, for instance, to run the assembler and linker. You will need a C++ standard library (such as libstdc++) as GCC is now written in C++.
- 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 --with-sysroot-build=/your/sysroot and --with-sysroot=/. The option --with-build-sysroot option uses that sysroot for the duration of the build, but the final program does not remember it. --with-sysroot=/ 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 //foo instead of /foo. You should only pass these options to the Binutils and GCC builds, some other packages also have a --with-sysroot option, but it instead means a libtool feature you should not use.
- Become self-hosting and complete Bare Bones II. Congratulations.