Next: Library Files, Previous: Build, Up: gcc Directory
all
doc
dvi
pdf
html
man
info
mostlyclean
clean
distclean
maintainer-clean
srcextra
srcinfo
srcman
install
uninstall
check
make check-gcc RUNTESTFLAGS="execute.exp=19980413-*"
注意可能需要安装额外的工具,像TCL或dejagnu,来运行测试包。
开始编译GCC的顶层树不是GCC目录,而是使用一个复杂的Makefile来协调构建的各个步骤,包括自举(bootstrap)编译器,以及使用新的编译器来构建目标库。
当GCC被配置为本地配置时,make的缺省动作是执行完整的三阶段自举。 这意味着GCC将被构建三次,一次是使用本地编译器, 一次是使用刚由本地编译器构建的编译器,一次是使用第二次构建的编译器。 理论上,最后两次应该产生相同的结果,这可以使用‘make compare’来检验。 每个阶段都被单独的配置和编译到独立的目录里, 以尽可能减少由于本地编译器和GCC之间的ABI不兼容所带来的问题。
如果做了改动,重建工作将还会从第一阶段开始,并且将改动贯穿三个阶段。 每个阶段都在它的构建目录下开始(如果先前曾被构建过), 重建,并且复制到它的子目录。这将允许你,在修订了引起第二阶段构建崩溃的bug之后, 可以继续进行自举。这虽然对编译器没有提供像从头进行自举那样好的覆盖效果, 但却能保证新的代码在语法上是正确的(例如,没有错误使用GCC的扩展功能), 并避免了不合逻辑的自举比较失败 1。
其它由顶层可以获得的目标包括:
bootstrap-lean
bootstrap
,除了各个阶段当不再需要的时候,将被移除。
这可以节省磁盘空间。
bootstrap2
bootstrap2-lean
stage
N-bubble (
N = 1...4)
all-stage
N (
N = 1...4)
cleanstrap
compare
profiledbootstrap
restrap
stage
N-start (
N = 1...4)
如果需要测试或调试N阶段的GCC时,你将使用该目标。
如果只需要执行GCC(但不需要运行‘make’,也不需要重建或运行测试包),
你应该能够在stageN-gcc目录下工作。
这使得很容易进行并行的调试多个阶段。
2。
stage
如果在编译阶段2和阶段3的编译器时,想使用非缺省的GCC标记,
则在执行‘make’时,在命令行上设置BOOT_CFLAGS
。
通常,第一阶段只构建编写编译器的语言:通常是C,以及可能会有Ada。
如果你在调试一个其它的阶段2前端的错误编译(例如,Fortran前端),
你可能想要在第一阶段也有其它语言的前端。如果这样,
在执行‘make’时在命令行中设置STAGE1_LANGUAGES
。
例如,在前述情况中,要调试由阶段1编译器造成的Fortran前端的错误编译, 可能需要一个命令如
make stage2-bubble STAGE1_LANGUAGES=c,fortran
另外,可以使用每个语言的目标,来构建和测试没有在阶段1启用的语言。 例如,make f951将在stage1构建目录下构建一个Fortran编译器。