|
发表于 2008-4-2 16:35:27
|
显示全部楼层
假设我们现在有一台 pc, 它上面有在 pc 本地运行的 gcc, 并且它生成的程序也是跑在 pc 上的, 我们称这样的 gcc 为本地 gcc
现在我们有另一台 mips 平台的电脑, 而且我们没有它上面能跑的 gcc 或者任何其它的编译器, 然后我们的目的是想办法为其制作一套编译器.
ok, 我们先要在 pc 上搞到 gcc/binutil/*libc/... 以及所有制作工具链必需的工具的源代码, (当然你也可以从 0 开始写一套, 不管怎样, 它只是 pc 上的程序, 并非凭空的蛋或者鸡) 为了便于描述, 让我们统称它们为 gcc. 然后我们对进行修改, 让它具备生成 mips 平台的程序的能力. 这样我们就可以利用本地的 gcc 和这套 hack 过的源码编译一套运行在 pc 上, 但是生成的程序却跑在 mips 上的编译器, 它可能被称为 mips-linux-gcc.
好了, 下面我们来看这套假想的 mips 系统, 假设它是一个新诞生的平台, 上面还没有任何能跑的程序, 那么我们就用这套 mips-linux-gcc 为其交叉编译一套操作系统及相关的软件.
然后我们再用 mips-linux-gcc 对刚才已经修改过的源码再一次进行编译, 当然有可能需要再进一步进行修改, 并保证最终得到的是套可以运行在 mips 上, 也可以生成 mips 本地代码的 gcc, 这样把它拷到 mips 上后, 我们可以用它来写新的编译器了.
再回到楼主后来的问题, 如何写一个 对未知平台 的编译器? 上面提到了, 这只是 pc 本地的开发, 它并不是跑在未知平台上的. 至于如何写出这样的编译器就不在楼主讨论的范围了 |
|