GCC安装手册(1)

发表于:2007-06-11来源:作者:点击数: 标签:
这是一份在 Unix 系统上安装GNU CC的程序,VMS系统的使用者请看*注解:VMS 安装。在这一节中,我们假设编译的动作是在和原始档案相同的目录下执行;如果希望在其他目录下执行编译动作,请看 *注解:其他目录。 在MS-DOS下直接安装 GNU CC 是不可行的,使用 DOS
这是一份在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 会在各个目录□找"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",但有些例外。
共2页: 1 [2] 下一页

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
...