📄 glibc2-howto.txt
字号:
/usr/bin/gcc -b i486-linuxglibc2 -nostdinc \ -I/usr/i486-linuxglibc2/include \ -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include "$@" 编译时你可以使用这个 script 而不是 gcc。 6.3 当 glibc 是主要函式库时用 libc 5 编译程式 当你已经将 glibc 安装成主要的函式库之後,又想用旧的函式库来编译程式的时 候, 你必须将 include 路径重设成旧的路径。 指定 "-nostdinc" 将会使预设 的路径无效, 而 "-I/usr/i486-linuxlibc5/include" 会将 include 的路径指 到旧函式库的 include 路径, 你也必须要指定 "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" 以含入 gcc 所需的 include 档。 注意要视你新的目录与 gcc 版本来调整这些路径。 要用旧的 libc 来做连结,你必须指定 gcc 所用的架构。 这是由 "-b i486-linuxlibc5" 这个选项所指定的。 对大部份的程式,你可以简单的将这些选项加入到 makefile 里的 $CFLAGS 与 $LDFLAGS 选项里: CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include -b i486-linuxlibc5 LDFLAGS = -b i486-linuxlibc5 假如你使用 configure 这个 script, 在执行 configure 之前, 定义 shell 变数 $CFLAGS 与 $LDFLAGS (在 csh/tcsh 下用 env/setenv 在 sh/bash/或其它 之下用 set/export)。 这样产生的 makefile 应该会包含正确的 $CFLAGS 与 $LDFLAGS。 不过并非所有的 configure scrpt 都会去取得这些变数, 所以在执 行完 configure 之後,你还是要简检查一下 makefile, 假如需要的话,手动修 改它。 假如你所要编译的程式只呼叫 gcc,(而不直接呼叫 cpp 或 binutils) 你可以使 用以下的 script,省去每次指定所有选项的麻烦: #!/bin/bash /usr/bin/gcc -b i486-linuxlibc5 -nostdinc \ -I/usr/i486-linuxlibc5/include \ -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include "$@" 编译时你可以使用这个 script 而不是 gcc。 7. 编译 C++ 程式 因为 libg++ 使用了部份的数学函式库,也就是说会连结到 libm。 由於你目前 的 libg++ 是用旧版的函式库所建立的, 所以你必须重新用 glibc 来 compile libg++ 或是取得一份预先编译好的版本。 最新版的 libg++ source 与用 glibc 所连结的预先编译版可以在 [22]ftp://ftp.yggdrasil.com/private/hjl/ 找到。 7.1 用测试的 C 函式库安装 libg++ 假如你已经将 glibc 安装成测试用的函式库,那你必须安装到 glibc 所安装的 目录下 (例如由前一节所示的 /usr/i486-linuxglibc2)。 假如你要安装预先编 译好的版本 (这也是我建议的安装方式,因为我一直都不能用这种方式成功地编 译 libg++), 你必须将档案解到暂存的目录下, 将 usr/lib/ 下的所有档案搬 到 <install directory>/lib/, 并将 usr/include/ 下的所有档案搬到 <install directory>/include/ 下, (记得先删除 include/g++ 这个连结!) 再将 usr/bin/ 下的档案搬到 <install directory>/bin/。 7.2 在主要 glibc 下安装 libg++ 若你已经将 glibc 安装成主要的函式库,假如还想要用旧的 libc 来编译 g++ 的程式, 那你必须先将旧的 libg++ 档案移至旧的 libc 的目录下。 也许最简 单的方式就是如前一节用 libc 5 来安装一份新版的拷贝, 然後再正常安装 glibc 版。 7.3 使用非主要的 C 函式库来编译 C++ 程式 假如你想用非主要的 C 函式库来编译 C++ 程式, 那你必须要加入 g++ 的 include 目录。 在上面的例子中, 对测试用的 glibc 是 /usr/i486-linuxglibc2/include/g++, 而对主要 glibc 则是 /usr/i486-linuxlibc5/include/g++, 这通常都可以由添加至 $CXXFLAGS 这个 变数来完成: CXXFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -I/usr/i486-linuxlibc5/include/g++ -b i486-linuxglibc28. 报告臭□ 假如你以为这函式库有错,请先阅读 FAQ,也许已经有人遇到过这个问题, 并且 也已经有了简单的解决方法。 另外,你也应该查看 INSTALL 档中的 "Recommended Tools to Install the GNU C Library" 一节, 因为有些错误不 在於 glibc 而是在於这些工具。 假设你找到了臭□,请先确定那的确是臭□。 一个判断的好方法是看看 glibc 的行为是否与其它的 C 函式库相同。 假如相同的话,那也许你是错的,而函式 库是正确的。 (但也不一定如此) 假如不相同的话,那肯定两者之中有一个是错 的。 接著,请到 [23]http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl, 并且 查看臭□资料库,确定这个问题尚未有人提出。 你也应该看看 BUGS (内付於 libc 中) 所列出的目前已被发现的臭□。 一旦你确定找到了一只新的臭□,请试著将它缩小到最小的 test case。 就 C 函式库而言,你只需要将它缩小到单独一个函式呼叫(假如可以的话)。 这应该不 是太困难的事。 最後一个步骤是就你的 test case 提出臭□报告。 要送出臭□报告,请包含你 的 test case、你所得到的结果、你所期待的结果、 你认为可能的原因在那 (只 要你曾想过的任何原因)、你的系统类别、你所使用的 GNU C 函式库、 GNU CC 编译器、GNU binutils 的版本。另外, 请附上执行 configure 时产生的 config.status 与 config.make, 这两个档案会在你执行 configure 时候的目 录下。 所有的臭□报告都应该使用 glibcbug 这个 GNU libc 所附的 shell script 送 至 [24]bugs@gnu.org (旧的位址 [25]bugs@gnu.ai.mit.edu 也仍然可以使用)。 或是到 GNATS 网站上利用 [26]http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl 这个介面来做。 你的建议与问题应该送到 [27]bugs-glibc@prep.ai.mit.edu 这个邮递列表。 假 如你没有阅读新闻群组 gnu.bug.glibc, 那麽你可以要求 [28]bug-glibc-request@prep.ai.mit.edu 加入这个列表。 请不要将 GNU C 函式库的臭□报告送到 <bug-gcc@prep.ai.mit.edu>, 这是为 了 GNU CC 而设立的,而 GNU CC 与 GNU C 函式库是由不同人们的所维护的。 9. Specs 档□例 这里是一份 specs 的□例。这将使 gcc 用 glibc2 来编译与连结。 它应该位於 /usr/lib/gcc-lib/<新系统目录>/<gcc 版本>. 假如你用的是 x86 的系统,那你 也许可以直接将这一段复制到档案里去。 *asm: %{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} *asm_final: %{pipe:-} *cpp: %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT} *cc1: %{profile:-p} *cc1plus: *endfile: %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s *link: -m elf_i386 %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} %{static:-static}}} *lib: %{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}} *libgcc: -lgcc *startfile: %{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s} *switches_need_spaces: *signed_char: %{funsigned-char:-D__CHAR_UNSIGNED__} *predefines: -D__ELF__ -Dunix -Di386 -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(i386) -Amachine(i386) *cross_compile: 0 *multilib: . ;10. 杂项10.1 进一步的资料 相关网页 * [29]FSF's GNU C Library Home Page * [30]Using GNU Libc 2 with Linux * [31]Installing glibc-2 on Linux. * [32]Debian libc5 to libc6 Mini-HOWTO. 新闻群组 * [33]comp.os.linux.development.system * [34]comp.os.linux.development.apps * [35]linux.dev.kernel * [36]gnu.bugs.glibc 邮递列表 Glibc 2 Linux 讨论列表 这个邮递列表是为了让安装有 glibc,也就是新的 GNU C 函式库,的使 用者讨论用的。 议题包括相容性的问题,以及在 linux/glibc 环境下程 式的编译问题。 要订阅这个邮递列表, 请寄一封信至 [37]Majordomo@ricardo.ecn.wfu.edu, 信的内容为 "subscribe glibc-linux <your email address>"。 10.2 贡献者列表 大部份的资讯都是由 [38]GNU Libc web page 以及 Ulrich Drepper 的 <drepper@gnu.ai.mit.edu> glibc 2 announcement 所偷来的, Andreas Jaeger <aj@arthur.rhein-neckar.de> 则提供了部份的臭□报告。 以下各位都曾对本文件提供相关资讯以及意见: * Allex Juang<allex@ms2.accmail.com.tw> * Mark Brown <M.A.Brown-4@sms.ed.ac.uk> * Ulrich Drepper <drepper@gnu.ai.mit.edu> * Scott K. Ellis <ellis@valueweb.net> * Aron Griffis <agriffis@coat.com> * Andreas Jaeger <aj@arthur.rhein-neckar.de> * Frodo Looijaard <frodol@dds.nl> * Ryan McGuire <rmcguire@freenet.columbus.oh.us> * Shaya Potter <spotter@capaccess.org> * Les Schaffer <godzilla@futuris.net> * Andy Sewell <puck@pookhill.demon.co.uk> * Gary Shea <shea@gtsdesign.com> * Stephane <sr@adb.fr> * Jan Vandenbos <jan@imaxx.net> 这份文件的翻译是由以下数人所完成的: * 中文: Allex Juang<allex@ms2.accmail.com.tw> * 法文: Olivier Tharan <tharan@int-evry.fr> * 日文: Kazuyuki Okamoto <ikko-@pacific.rim.or.jp> 10.3 回馈 除了撰写这份 HOWTO、维护 [39]glibc 2 for Linux 这网页、并且在我的机器上 使用之外,我与 glibc 计划完全无关, 我也不了解这方面的议题,但会尽可能 的对寄给我的问题提供帮助。 我也很欢迎你提出任何的回馈、修正、或是建议, 请将它们寄到 [40]ejg3@cornell.edu。 10.4 Copyright. 此份文件的版权属於 Eric Green,这份文件可以在 LDP 的执照下散布。References 1. http://sunsite.unc.edu/LDP 2. http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html 3. file://localhost/tmp/bg5sgmltools.28325/Glibc2-HOWTO.txt.html#test-install 4. file://localhost/tmp/bg5sgmltools.28325/Glibc2-HOWTO.txt.html#primary-install 5. http://huizen.dds.nl/~frodol/glibc/ 6. http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html 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 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 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 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-linux.bin.tar.gz 17. ftp://ftp.ifi.uio.no/pub/gnu 18. ftp://ftp.redhat.com/pub/redhat/ 19. ftp://ftp.debian.org/debian/dists/unstable/main/ 20. file://localhost/tmp/bg5sgmltools.28325/Glibc2-HOWTO.txt.html#specs 21. file://localhost/tmp/bg5sgmltools.28325/Glibc2-HOWTO.txt.html#specs 22. ftp://ftp.yggdrasil.com/private/hjl/ 23. http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl 24. mailto:bugs@gnu.org 25. mailto:bugs@gnu.ai.mit.edu 26. http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl 27. mailto:bugs-glibc@prep.ai.mit.edu 28. mailto:bug-glibc-request@prep.ai.mit.edu 29. http://www.gnu.org/software/libc/libc.html 30. http://www.imaxx.net/~thrytis/glibc/ 31. http://huizen.dds.nl/~frodol/glibc/ 32. http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html 33. news:comp.os.linux.development.system 34. news:comp.os.linux.development.apps 35. news:linux.dev.kernel 36. news:gnu.bug.glibc 37. mailto:Majordomo@ricardo.ecn.wfu.edu 38. http://www.gnu.org/software/libc/libc.html 39. http://www.imaxx.net/~thrytis/glibc 40. mailto:ejg3@cornell.edu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -