Porting GCC to your OS

来自osdev
Zhang3讨论 | 贡献2022年3月24日 (四) 08:31的版本 (创建页面,内容为“{{Rating|4}} {{In Progress}} * 阅读GCC交叉编译器。 * 制作一个特定于操作系统的工具链。 * 阅读自托管GCC交叉编译(Hosted GCC Cross-Compiler)。 * 有完备的 C Library。 GCC是相当可移植的,需要C标准库和POSIX的一些扩展。 例如,它需要fork和exec来运行汇编器和链接器。 你将需要一个C++标准库 (例如libst…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索
难度等级
Difficulty 4.png
大师

这个页面正在建设中! 此页面或部分内容仍在改进中,因此可能还不完整。 其内容可能会在不久的将来更改。

  • 阅读GCC交叉编译器
  • 制作一个特定于操作系统的工具链
  • 阅读自托管GCC交叉编译(Hosted GCC Cross-Compiler)
  • 有完备的 C Library。 GCC是相当可移植的,需要C标准库和POSIX的一些扩展。 例如,它需要fork和exec来运行汇编器和链接器。 你将需要一个C++标准库 (例如libstdc++),因为GCC现在是用 C++ 编写的。
  • 使用交叉移植软件中的指令交叉编译libgmp、libmpc、libmpfr和其他依赖项。
  • 同样交叉编译BinutilsGCC,但是传递特殊的配置选项--with-build-sysroot=/your/sysroot--with-sysroot=/。 选项 --with-build-sysroot 选项在构建期间使用该sysroot,但最终程序不记录它。 --with-sysroot=/不应该被需要,或者应该被设置为空字符串,但是一些binutils/gcc版本有缺陷,所以还需要它,这有一个缺点,最终的工具链可能使用//foo而不是/foo。 你应该将这些选项传递给Binutils和GCC构建,其他一些包也有一个--with sysroot选项,但这不意味着你应该使用libtool功能。
  • 成为自托管系统并完成Bare Bones II。 恭喜你。

另见