当前位置:Linux教程 - Linux综合 - GCC 安装手册[中文版]

GCC 安装手册[中文版]

  安装 GNU CC =========== 本文为gcc installation guide之中译本,版权所有,译者允许本文在网际 网路上作免费之流传、复制,然除经译者允许外,禁止任何商业使用。 译者: 工技资管所 陈振宇 [email protected] 交大资管所 宋振华 [email protected] 这是一份在Unix系统上安装GNU CC的程序,VMS系统的使用者请看 *注解:VMS 安装。在这一节中,我们假设编译的动作是在和 原始档案相同的目录下执行;如果希望在其他目录下执行编译动 作,请看 *注解:其他目录。 在MS-DOS下直接安装 GNU CC 是不可行的,使用 DOS 下的任何 编译器皆无法成功的编译 GNU CC,除非你使用 GNU CC 本身。欲 在 MS-DOS 下安装 GNU CC,你必需取得已完全编译完成的套件:DJGPP。 DJGPP 中含有机器码档案以及原始程式档,并且还包含了所有必需的 编译工具及函式库。 1.如果你是在另外一部机器上,在同一目录下先完成了GNU CC的 编译,执行 "make distclean" 来删除一些可能无用的档案。 其中一个被删除的档案叫做 "Makefile";如果 "make distclean" 回应 Makefile 不存在(not exist)的讯息,那可能表示这个目 录已经被适当的清理完毕。 2.在 System V Release 4 系统上,请确定在路径 "PATH" 设定中, "/usr/bin" 在 "/usr/UCb" 之前。因为 "/usr/ucb" 中的 cc 使用了 有错误的函式库。 3.你可以执行 "configure" 这支程式来设定 host machine、build machine 、及 target machine。 所谓的 "build machine" 指的是你目前正在使用的机器;而 "host machine" 则是你期望编译後所产生的编译器工作的 机器;最後 "target machine" 则是你期望这个编译器 (正在做编译的那个)产生的目的码的主机。(一般而言, 前两者是相同的)。 如果你正在建立一的产生它自己执行的机器的目的码的编译器 (native compiler),一般而言,不需要在 "configure" 作 任何的设定;它将以目前正在使用的机器作为 host、build 及 target machine。所以当你制作 native compiler 的时候,不需 作任何设定。除非 "configure" 无法指出你的系统组态或是它猜 错了。 这样的情况下,用选项 --build 指定 build machine 的 "configuration name"; host 及 target machine 将预设和 build machine相同。(若你正在建立的是一个交互编译器,请看 *注解:交互编译器) 底下是一个例子: ./configure --build=sparc-sun-sunos4.1 建置名 (configuration name) 可能是一个标准的形式或者是标准形 式的缩写。 一个完整的建置名有由 "-" 号分开的三个部份。大概是: "CPU名称-厂商名称-系统名称"(每一个部份可含有自己的 "-" 号,configure 这个程式会自行分辨之)。举例来说: "m68k-sun-sunos4.1" 是指 Sun 3。 你也可以用别名取代部份的建置名。例如: `sun3' 就代表了 `m68k-sun' ,`sun3-sunos4.1' 也是另一种 Sun 3 的表示方法。你也可以简单点用 `sun3-sunos',因为这边假设 SunOS 的版本预设为 4. `sun3-bsd' 也可 以,因为 `configure' 知道 SunOS 是 Sun 3 上唯一的 BSD 变种。 你可以在各种系统型态後面注明版本号码,及 CPU 型号。在大部份的例子 当中,版本是没用的,而且会被忽略掉。所以如果你知道的话,最好也把 号码加上去。(ranma 注:这段原文怪怪的) 关於所支援的建置名与建置的相关注解,请参考 *注解:建置。在继续安装 GNU CC 之前,你最好看一下那份注解。 底下有四种附加的选项可以让你分别指定不同的硬体与软体建置: `--with-gnu-as', `with-gnu-ld`, `--with-stabs' 及 `--nfp'。 `--with-gnu-as' 如果你想要将 GNU CC 拿来跟 GNU 组译器 (GNU assembler) 并用的话,你可以在执行 `configure' 时加上 `--with-gnu-as' 这 个选项。 使用这个选项并不会安装 GAS。 它只是将 GNU CC 的输出修改成可以 和 GAS 并用而已。要不要安装 GAS 由你自己决定。 相反地,如果你 *不要* 使用 GAS 而且在建构 GNU CC 时不注明 `--with-gnu-as' 的话,你也要自己决定是不是要安装 GAS。 GNU CC
[1] [2] [3] 下一页 

会在各个目录□找 `as' 这个程式,如果它找到了 GAS 的话,它会用 GAS。如果你不确定 GNU CC 到底是找到哪一个组译器来用的话,在 执行 gcc 时加上 `-v' 这个选项。 会因为你是否使用 GAS 而产生不同变化的系统有: `hppa1.0-ANY-ANY', `hppa1.1-ANY-ANY', `i386-ANY-sysv', `i386-ANY-isc', `i860-ANY-bsd', `m68k-bull-sysv', `m68k-hp-hpux', `m68k-sony-bsd', `m68k-altos-sysv', `m68000-hp-hpux', `m68000-att-sysv', `ANY-lynx-lynxos', 及 `mips-ANY'). 对於其他系统, `--with-gnu-as' 并不会造成影响。 上述系统中 (除了 HP-PA, 386 上的 ISC, 及 `mips-sgi-irix5.*'), 如果你使用 GAS,你也应该要使用 GNU 连结器 (linker),也就是要 注明 `--with-gnu-ld'。 `--with-gnu-ld' 如果你想要拿 GNU 连结器跟 GNU CC 并用的话,注明这个选项。 这个选项并不会安装 GNU 连结器,它只是改变 GNU CC 的习性来 配合 GNU 连结器而已。比较不同的是,它使得 `collet2' 这个程式 不会被安装。这个程式是在大部份的建构中拿来做系统连结器的前 置处理用的。 `--with-stabs' 在大部份以 MIPS 为基础的系统以及 Alpha 上,你必须指明 要 GNU CC 产生出正规的 ECOFF 除错格式,或是要 BSD 式的 stabs 传递 ECOFF 的符号表。正规的 ECOFF 除错格式并不能完整地 处理 C 以外的语言。而 BSD stabs 格式可以处理其他语言,但只能 在 GNU 除错器 (GNU debugger) 上面做。 在正常情况下,GNU CC 预设使用 ECOFF 除错格式,如果你偏好 BSD stabs 格式,在编译时注明 `--with-stabs'。 不管你在建立 GNU CC 时是选用哪一种预设值,使用者都可以用 `-gcoff' 和 `-gstabs+' 这两个选项来指定他所要用的除错格式。 `--with-stabs' 在 386 上的 ISC 系统中有特别意义,当 `--with-gas' 也被用到时。它会选择使用嵌在 COFF 输出中的 stabs 除错资讯 (stabs debugging information embedded in COFF output) 。这类的 除错资讯也支援 C++,普通的 COFF 除错资讯并不能做到。 `--with-stabs' 在跑 SVR4 的 386 系统中也有特殊意义。它选择使 用嵌在 ELF 输出中的 stabs 除错资讯。在 386 SVR4 平台上,目前的 C++ 编译器 (2.6.0 版) 并不支援 DWARF 除错资讯。stabs 提供了 另一个可以用的方法。它需要 GAS 和 GDB,因为正常的 SVR4 工具并 不能产生或解译 stabs 格式。 `--nfp' 在某些系统上,你必须藉由这个选项注明这台机器是否有浮点运 算器。这些系统包括了 `m68k-sun-sunosN' 及 `m68k-isi-bsd'。目前 `--nfp' 在其他系统上并没有作用,虽然在别的系统上可能也可以有不 同的效果。 `configure' 这个程式会去原始码目录底下的子目录□面去找那些要跟 GNU CC 整合的其他编译器。例如 GNU 的 C++ 编译器,G++,放在 `cp' 这个子目录□。`configure' 会把建立这些编译器的规则加到 `Makefile' 中。 底下我们会详细说明所有 `configure' 会设定的档案。在正常情况下, 你不需要去担心这些档案。 * 会建立一个叫 `config.h' 的档案,□面有一个 `#include' 记载了你 将来要用来执行这个编译器行的机器的顶层设定档 (*注解:建置)。这个档 案用来定义 host machine 的资讯。其中包含 `tm.h'。 顶层设定档放在 `config' 这个子目录□。它都叫做 `xm-某某东西.h', 通常是 `xm-机器名.h',但有些例外。 如果你的系统不支援符号连结 (symbolic link),你可以要设定 `config.h' 让它包含一条 `#include' 指到适当的档案。 * 会建立一个叫 `tconfig.h' 的档案,它引入了 target machine 的顶层 设定档。这是为了要用来编译一些要在那台机器上跑的程式。 * 会建立一个叫 `tm.h' 的档案,它包含了 target machine 的机器描述 巨集档案 (machine-description macro file)。它应该是放在 `config' 子目录中而且它的名字通常是 `机器名.h'。 * `configure' 这个命令档也会在 `Makefile.in' 这个样版档上加入一些 字 来产生 `Makefile'。 这些额外的文字来自 `config' 目录中叫做 `t-TARGET' 及 `x-HOST' 的档案。如果这些档案不存在,那就表示不需要为 target 或 host machine 加上其他东西。 4. 安装 GNU CC 的标准目录是 `/usr/local/lib'。如果你打算安装到别的地方, 在执行 `configure' 的注明 `--previx=目录'。`目录' 是你打算用来取代 `/usr/local' 的目录名称,除了底下这个例外: 不管你的编译器安装在何处, `/usr/local/include' 都是会被加到找寻标头档的目录。如果你不想要这样, 你可以用下面这个 `--local-prefix' 选项。
上一页 [1] [2] [3] 下一页 

5. 指定 `--local-prefix=目录',这样可以让你设定编译器找寻标头档的路径。 而不是使用 `/usr/local/include'。 *只有* 在你的电脑上放你特殊的规格档案有不同习惯 (不是 `/usr/local') 时,你才会需要 `--local-prefix' 这个选项。 *不要* 把 `/usr' 指定

(出处:http://www.sheup.com)


上一页 [1] [2] [3] 

*只有* 在你的电脑上放你特殊的规格档案有不同习惯 (不是 `/usr/local') 时,你才会需要 `--local-prefix' 这个选项。 *不要* 把 `/usr' 指定

(出处:http://www.sheup.com/)


上一页 [1] [2] [3] [4]