📄 00000001.htm
字号:
配合 GNU 连结器而已。比较不同的是,它使得 `collet2' 这个程式 <BR> 不会被安装。这个程式是在大部份的建构中拿来做系统连结器的前 <BR> 置处理用的。 <BR> <BR> `--with-stabs' <BR> 在大部份以 MIPS 为基础的系统以及 Alpha 上,你必须指明 <BR> 要 GNU CC 产生出正规的 ECOFF 除错格式,或是要 BSD 式的 <BR> stabs 传递 ECOFF 的符号表。正规的 ECOFF 除错格式并不能完整地 <BR> 处理 C 以外的语言。而 BSD stabs 格式可以处理其他语言,但只能 <BR> 在 GNU 除错器 (GNU debugger) 上面做。 <BR> <BR> 在正常情况下,GNU CC 预设使用 ECOFF 除错格式,如果你偏好 BSD <BR> stabs 格式,在编译时注明 `--with-stabs'。 <BR> <BR> 不管你在建立 GNU CC 时是选用哪一种预设值,使用者都可以用 <BR> `-gcoff' 和 `-gstabs+' 这两个选项来指定他所要用的除错格式。 <BR> <BR> `--with-stabs' 在 386 上的 ISC 系统中有特别意义,当 `--with-gas' <BR> 也被用到时。它会选择使用嵌在 COFF 输出中的 stabs 除错资讯 <BR> (stabs debugging information embedded in COFF output) 。这类的 <BR> 除错资讯也支援 C++,普通的 COFF 除错资讯并不能做到。 <BR> <BR> `--with-stabs' 在跑 SVR4 的 386 系统中也有特殊意义。它选择使 <BR> 用嵌在 ELF 输出中的 stabs 除错资讯。在 386 SVR4 平台上,目前的 <BR> C++ 编译器 (2.6.0 版) 并不支援 DWARF 除错资讯。stabs 提供了 <BR> 另一个可以用的方法。它需要 GAS 和 GDB,因为正常的 SVR4 工具并 <BR> 不能产生或解译 stabs 格式。 <BR> <BR> `--nfp' <BR> 在某些系统上,你必须藉由这个选项注明这台机器是否有浮点运 <BR> 算器。这些系统包括了 `m68k-sun-sunosN' 及 `m68k-isi-bsd'。目前 <BR> `--nfp' 在其他系统上并没有作用,虽然在别的系统上可能也可以有不 <BR> 同的效果。 <BR> <BR> `configure' 这个程式会去原始码目录底下的子目录□面去找那些要跟 <BR> GNU CC 整合的其他编译器。例如 GNU 的 C++ 编译器,G++,放在 `cp' <BR> 这个子目录□。`configure' 会把建立这些编译器的规则加到 `Makefile' <BR> 中。 <BR> <BR> 底下我们会详细说明所有 `configure' 会设定的档案。在正常情况下, <BR> 你不需要去担心这些档案。 <BR> <BR> * 会建立一个叫 `config.h' 的档案,□面有一个 `#include' 记载了你 <BR> 将来要用来执行这个编译器行的机器的顶层设定档 (*注解:建置)。这个档 <BR> 案用来定义 host machine 的资讯。其中包含 `tm.h'。 <BR> <BR> 顶层设定档放在 `config' 这个子目录□。它都叫做 `xm-某某东西.h', <BR> 通常是 `xm-机器名.h',但有些例外。 <BR> <BR> 如果你的系统不支援符号连结 (symbolic link),你可以要设定 `config.h' <BR> 让它包含一条 `#include' 指到适当的档案。 <BR> <BR> * 会建立一个叫 `tconfig.h' 的档案,它引入了 target machine 的顶层 <BR> 设定档。这是为了要用来编译一些要在那台机器上跑的程式。 <BR> <BR> * 会建立一个叫 `tm.h' 的档案,它包含了 target machine 的机器描述 <BR> 巨集档案 (machine-description macro file)。它应该是放在 `config' <BR> 子目录中而且它的名字通常是 `机器名.h'。 <BR> <BR> * `configure' 这个命令档也会在 `Makefile.in' 这个样版档上加入一些字 <BR> 来产生 `Makefile'。 这些额外的文字来自 `config' 目录中叫做 <BR> `t-TARGET' 及 `x-HOST' 的档案。如果这些档案不存在,那就表示不需 <BR> 要为 target 或 host machine 加上其他东西。 <BR> <BR> 4. 安装 GNU CC 的标准目录是 `/usr/local/lib'。如果你打算安装到别的地方, <BR> 在执行 `configure' 的注明 `--previx=目录'。`目录' 是你打算用来取代 <BR> `/usr/local' 的目录名称,除了底下这个例外: 不管你的编译器安装在何处, <BR> `/usr/local/include' 都是会被加到找寻标头档的目录。如果你不想要这样, <BR> 你可以用下面这个 `--local-prefix' 选项。 <BR> <BR> 5. 指定 `--local-prefix=目录',这样可以让你设定编译器找寻标头档的路径。 <BR> 而不是使用 `/usr/local/include'。 <BR> <BR> *只有* 在你的电脑上放你特殊的规格档案有不同习惯 (不是 `/usr/local') <BR> 时,你才会需要 `--local-prefix' 这个选项。 <BR> <BR> *不要* 把 `/usr' 指定给 `--local-prefix'!你在 `--local-prefix' 所 <BR> 用的目录 *必须不* 包含所有的系统标准标头档。如果它真的包含,某些程 <BR> 式会被编译成错的。(包括 GNU Emacs, 在某些目标机器上),因为这样做会 <BR> 盖掉或搞丢 `fixincludes' 所定的标头档案集。 <BR> <BR> 6. 确定 Bison 剖析器产生机 (parser generator) 已经安装。(如果 Bison <BR> 所产生出来的 `c-parse.c' 跟 `cexp.c' 这两个档案比 `c-parse.y' 跟 <BR> `cexp.y' 还新,而且你不打算改这些 `.y' 档的话,这步就不用做。 <BR> <BR> 在 1988 年 9 月 8 号之前的 Bison 版本会产生不正确的 `c-parse.c'。 <BR> <BR> 7. 如果你选择了一个需要其他 GNU 工具(像是 GAS 或 GNU 连结器) 而不是 <BR> 标准系统工具的组态来做 GNU CC 的话,记得在建立 GNU CC 的目录底下 <BR> 安装所需的工具,并命名为 `as', 'ld' 或其他相关名称。这样会使得编 <BR> 译器会在编译 `enquire' 时去找这些适当的工具。 <BR> <BR> 或者是,你可以在做後来的编译工作时把 `PATH' 环境变数值设成 GNU <BR> 工具在标准系统工具之前。 <BR> <BR> 8. 建立这个编译器。只要在编译器目录□打入 `make LANGUAGES=c' 就好了。 <BR> <BR> `LANGUAGES=c' 指明了只会编译 C 编译器。makefile 正常下会去编译所有 <BR> 它支援的语言,目前是 C, C++ 和 Objective C。然而,只有 C 是你用其 <BR> 他非 GNU C 编译器所编出来的会动的一个。再说,在这个阶段编译 C 以外 <BR> 的东西是在浪费时间。 <BR> <BR> 通常,你可以打入这个参数 `LANGUAGES="LIST"' 指明你要的语言,其中 <BR> "LIST" 是 `c', `c++' 和 `objective-c' 之一或多个。如果你在 GNU CC <BR> 原始码目碌下有其他附加的 GNU 编译器,你会可以加到 `LIST' □面。 <BR> <BR> 忽略掉在编 `insn-emit.c' 时所有 "statement not reached" <BR> 的警告讯息,那是正常的。还有,警告讯息 "unknown escape sequence" 在 <BR> 编 `genopinit.c' 或是其他档案是也是正常的。同理,你也可以不理那些 <BR> 在 `insn-emit.c' 和 `insn-recog.c' 的 "constant is so large that it <BR> is unsigned" 和 `enquire.o' □的关於 "comparison always being zero" <BR> 。 其他编译错误可能表示了移植到你的机器或作业系统时的错误,你应该 <BR> 仔细检查并提出报告 (附注:虫)。 <BR> <BR> 有些要钱的编译器因为它们本身的虫或是限制,在编 GNU CC 时会失败。例如 <BR> Microsoft 的编译器说会用光所有巨集空间。有的 Ultrix 的编译器会用完 <BR> 表示式空间,你必需分开问题发生处的叙述。 <BR> <BR> 9. 如果你在做交互编译器,就此打住。 *附注:交互编译器 <BR> <BR> 10. 用底下这个命令把第一阶段目的档案和可执行档案放到一个目录: <BR> make stage1 <BR> <BR> 这些档案会放到一个叫 `stage1' 的副目录□。当安装完成以後,你或许 <BR> 会用 `rm -r stage` 把这些档案杀掉。 <BR> <BR> 11. 如果你选择了一个需要其他 GNU 工具(像是 GAS 或 GNU 连结器) 而不是 <BR> 标准系统工具的组态来做 GNU CC 的话,把这些要用的工具放在 `stage1' <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -