📄 glibc2-howto.txt
字号:
Glibc 2 HOWTO 中文版 原作 Eric Green, ejg3@cornell.edu译者 Allex Juang, allex@ms2.accmail.com 1.5 版, 1998年 2月 8日 _________________________________________________________________ 这份 glibc 2 HOWTO 内容包括在 Linux 系统上安装与使用第二版 GNU C Library。 _________________________________________________________________ 1. 简介 * 1.1 关於 glibc 2 * 1.2 关於这份文件 * 1.3 这份文件的最新改变 2. 选择你的安装方式3. 取得函式库4. 安装成测试用的函式库 * 4.1 编译与安装 * 4.2 更新 dynamic loader * 4.3 设定 gcc * 4.4 更新标头档连结 * 4.5 测试你的安装 5. 安装成主要函式库 * 5.1 由原始码编译函式库 * 5.2 准备安装 * 5.3 由预先编译好的套件安装 * 5.4 由原始码安装 * 5.5 更新 gcc specs * 5.6 测试你的安装 6. 使用非主要的 C 函式库编译程式 * 6.1 一个关於使用非主要 C 函式库的警告 * 6.2 用测试安装的 glibc 编译程式 * 6.3 当 glibc 是主要函式库时用 libc 5 编译程式 7. 编译 C++ 程式 * 7.1 用测试的 C 函式库安装 libg++ * 7.2 在主要 glibc 下安装 libg++ * 7.3 使用非主要的 C 函式库来编译 C++ 程式 8. 报告臭□9. Specs 档□例10. 杂项 * 10.1 进一步的资料 * 10.2 贡献者列表 * 10.3 回馈 * 10.4 Copyright. _________________________________________________________________ 1. 简介1.1 关於 glibc 2 Glibc 2 是最新版的 GNU C 函式库。 它目前不需修改就可以在 GNU Hurd ,Linux i386, m68k, 以及 alpha 系统上执行, 而 2.1 版中将加入对 Linux PowerPC, MIPS, Sparc, Sparc 64 与 Arm 等系统的支援。未来将加入 对其它架构及作业系统的支援。 在 Linux 上,glibc 2 是主要版本为 6 的 libc,也就是 Linux libc 5 的後继 者。 Linux libc 的发展人员想以此逐渐取代 libc 5。 就 2.0.6 来看,glibc 已具有成熟产品的品质。 Glibc 2.1 版 (在不久的将来) 将加入更多的功能, 并移植到更多系统上,足够当作主流使用。 Glibc 2 有三个选择性的附加套件: Crypt UFC-crypt 加密套件。 由於出口限制所以要分离出来。 LinuxThreads Posix 1003.1c "pthread" 介面的实作。 Locale data 包含制造使用 glibc 的 internationalization 功能所需 locale 资料 档案的资料。 强烈建议安装 Cryt 与 LinuxThreads 这两个附加套件, 如果不安装的话,有可 能会与其它系统上的函式库造成不相容的情形。 (假如你不想使用这两个附加套 件的话, 那你必须在执行 configure 时加上 --disable-sanity-checks 的选 项) 1.2 关於这份文件 这份文件涵盖如何在 Linux 系统上安装 glib 2, 适用对象是那些在 intel-based 机器上使用 libc 5 的使用者。 但是对於其它系统以及其它不同函 式库 (如 glibc 1) 的使用者, 只要将这份文件中出现的档名以及系统架构名称 作适当的代换, 应该也可得到些帮助。 这份 HOWTO 的最新版本的拷贝可在 [1]Linux Documentation Project 或是 [2]http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html 找到。 1.3 这份文件的最新改变 1.5 与 1.4 版的差别: * 由 Ed Bailey 加入索引 * 我的新电子邮件信箱位址 1.4 与 1.3 版的差别: * 将目前状态由实验性改成成熟产品。 * 更新发展中的移植列表。 * 更新最新版到 2.0.6。 2. 选择你的安装方式 有许多种方式安装 glibc,你可以安装成一个测试用的函式库, 将目前使用的函 式库当作是内定的, 然後在编译程式的时候用不同的选项来试用新的函式库。 用这种安装方式以後可以轻易的移除 glibc。 (虽然用 glibc 连结的程式在移除 glibc 後都将不能使用) 另外,用这种方式安装,你必须由原始码重新编译, 并 没有 binary distribution 可以安装成测试的函式库。 这样的安装请参照 [3] 安装成测试用的函式库。 这份文件中所说的另一种方式则是将 glibc 安装成主要函式库。 所有新编译的 程式都将会使用 glibc, 但是你也可以在编译时用不同的选项而将程式连结到旧 的函式库。 你可以直接安装已经编译好的版本,也可以自己编译函式库。 假如 想更改最佳化或是组态选项, 或是想加入已编译好的版本中未支援的 add-on 的 话, 那你必需取得原始码并且自己编译,这个安装的过程请参照 [4]安装成主要 的 C 函式库 Frodo Looijaard 描述了另一种 glibc 的安装方式。 他的方法是将 glibc 安装 成次要的函式库, 然後设定交叉编译器 (cross compiler) 来使用 glibc。 这 个方式比起这份文件中的测试安装要复杂的多,但是比较容易连结到 glibc。 这 个方法在他的 [5]Installing glibc-2 on Linux 文件中说明。 假如你现在使用的是 Debian 1.3, 但是不想为了 glibc 而升级到不稳定的版本 , 那麽 [6]Debian libc5 to libc6 Mini-HOWTO 会告诉你如何使用 Debian 的 package 来升级。 假如你要把 glibc 2 安装到一重要的系统上, 那也许你应使用测试的安装,或 是在备用系统上试试看。 即使没有臭□,某些程式在编译之前仍然需要某些修改 , 原因在於某些函式原型与型态上的改变。 3. 取得函式库 Glibc 2 包含 glibc package 以及数个附加套件: LinuxThreads、 Locale 与 Crypt, 原始码在 * [7]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz * [8]ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz * [9]ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz * [10]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz 你需要大约 150MB 的磁碟空间来作完全的编译与安装, 核心函式库的基本安装 大约要 50MB。 2.0.6 并没有 binary 的 package, 2.0.4 的 binary package 只有 i386 及 m68k 的版本, 而 2.0.1 for alpha 则可以在以下地方找到: * Intel x86: + [11]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz + [12]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386. tar.gz * Alpha: + [13]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux .tar.gz + [14]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha -linux.tar.gz * m68k: + [15]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin. tar.gz + [16]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-linu x.bin.tar.gz 由於 cypt 这个附加套件有出口限制,非美国使用者请到 [17]ftp://ftp.ifi.uio.no/pub/gnu 取得。 如果你用的是 RedHat distribution, 那你可以从 [18]ftp://ftp.redhat.com/pub/redhat/ 取得 glibc2 的 rpm。 在 RedHat distribution 5.0 中, glibc 2 是主要的 C 函式库。 如果你用的是 Debian distribution,那你可以从 [19]ftp://ftp.debian.org/debian/dists/unstable/main/ 取得 glibc2 的 package。档名是 libc6。 Glibc 2 目前是 Debian 测试版的基本 package, 等 到 Debian 2.0 出来之後将会是主要的 C 函式库。 4. 安装成测试用的函式库 这一节的内容是关於如何将 glibc 2 安装成测试用的函式库。 所有编译的程式 都连结到你目前的函式库, 除非你给了某些额外的参数才会连结到新的函式库。 由於路径被编译到某些档案中,你需要由原始码来安装这函式库。 4.1 编译与安装 需求 * 约 150 MB 的磁碟空间 * GNU make 3.75 * gcc >= 2.7.2 (最好是 2.7.2.1) * binutils 2.8.1 (假如是 alpha 你还需要 snapshot) * bash 2.0 * autoconf 2.12 (假如你更动了 configure.in) * texinfo 3.11 在一台安装有 64MB 记忆体 i586@133 的机器上, 编译完整的函式库 (包括附加 套件) 大约须要 3 小时。 而在 i686@200 则须约一个半小时。 解开原始码 你必需由 archive 中取出原始码。如此才能编译它,最好的方式如下: tar xzf glibc-2.0.6.tar.gz cd glibc-2.0.6 tar xzf ../glibc-linuxthreads-2.0.6.tar.gz tar xzf ../glibc-crypt-2.0.6.tar.gz tar xzf ../glibc-localedata-2.0.6.tar.gz 这会将 linuxthreads、 crypt 与 localedata 等目录放至 glibc-2.0.6 的目录 底下, 如此 configure 才可以找到这些 add-ons。 设定组态 在 glibc-2.0.6 的目录底下,建立一个新的目录 compile,并且 cd 到 compile 底下, 所有的工作都会在这个目录中完成,这会简化後续的清除工作。 (发展者似乎并未让 'make clean' 作得很好) mkdir compile cd compile 执行 ../configure。 要使用父加套件,你必需用 --enable-add-ons 指定, 例 如说 --enable-add-ons=linuxthreads,crypt,localedata。 你也必需指定要安装的目录,/usr/i486-linuxglibc2 是个不错的选择, 这样的 configure 命令如下: ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2 编译与安装 要编译与验证,执行 make make check 假如 'make check' 成功了,安装函式库: make install4.2 更新 dynamic loader 1. 建立连结, 从 ld.so 到 /lib/ld-linux.so.2: ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2 当一个档案连结时,这个函式库是唯一一个位置固定的。 当稳定的版本出现 的时候, 在 /lib 使用连结也会使得将 glibc 升级为主要函式库时更为轻 松。 2. 修改 /etc/ld.so.conf。 你需要增加新的函式库所在的路径到档案的最後, 这路径应该是 <prefix>/lib。 假如用以上的选择就应该是 /usr/i486-linuxglibc2/lib。 在你修改了 /etc/ld.so.conf 之後,执行: ldconfig -v4.3 设定 gcc 安装的最後一步是更新 /usr/lib/gcc-lib 以使 gcc 知道如何使用新的函式库。 首先,你需要复制目前的组态,要知道目前的组态,使用 gcc 的 -v 选项: % gcc -v Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs gcc version 2.7.2.2 这里,i486-unknown-linux 是目前所用的系统,2.7.2.2 则是目前版本。 你需 要将 /usr/lib/gcc-lib/<系统> 复制到新的测试系统目录: cd /usr/lib/gcc-lib/ cp -r i486-unknown-linux i486-linuxglibc2 到你的新系统目录以及版本目录下: cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -