注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
Linux系统下的病毒发展及其分类
从Melissa到Zotob:Windows蠕虫1
信息安全的隐患-GoogleHacking原
Linux比Windows更易受外星人入侵
避其锋芒——Linux操作系统入侵实
操作系统安全防范简述:Linux篇
Linux受攻击次数高于Windows
Linux中防御垃圾邮件的方法
RedHat Linux环境下防火墙配置初
Linux/Unix环境下的make和makefi
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> C >> 文章正文
Glibc 2 HOWTO 中文版 -- 4. 安装成测试用的函式库
作者:译者 Allex Juang, allex@ms2.ac…  来源:不详  点击:  更新:2006-12-19
简介:
   这一节的内容是关於如何将 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 install
 


4.2 更新 dynamic loader 


建立连结, 从 ld.so 到 /lib/ld-linux.so.2: 

 ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
 

当一个档案连结时,这个函式库是唯一一个位置固定的。 当稳定的版本出现的时候, 在 /lib 使用连结也会使得将 glibc 升级为主要函式库时更为轻松。 
修改 /etc/ld.so.conf。 你需要增加新的函式库所在的路径到档案的最後, 这路径应该是 /lib。 假如用以上的选择就应该是 /usr/i486-linuxglibc2/lib。 在你修改了 /etc/ld.so.conf 之後,执行: 

 ldconfig -v
 


4.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
 

修改目录下的 specs。在这档案中, 将 /lib/ld-linux.so.1 换成 /lib/ld-linux.so.2, 你也必需要移去档案中所有的 %{...:-lgmon} 表示式, 因为 glibc 不使用 gmon 函式库来做 profile。 你可以在 Specs 档□例找到一个□例。 

4.4 更新标头档连结 

你需要在你的 include 目录下建立连结到其它的 include 目录: 


 cd /usr/i486-linuxglibc2/include
 ln -s /usr/src/linux/include/linux
 ln -s /usr/src/linux/include/asm
 ln -s /usr/X11R6/include/X11
 

也许你有其它的函式库,例如说 ncurse, 而这些函式库会需要它们自己的标头档, 你应该从 /usr/include 复制或连结这些档案。 (有些函式库需要重新用 glibc2 来 compile,在这种情形下, 只要编译并且安装到 /usr/i486-linuxglibc2) 

4.5 测试你的安装 

要测试安装是否成功,建立一档案 glibc.c 如下: 


 #include 

 main()
 {
     printf("hello world!\n");
 }
 

用 "-b <安装目录> -nostdinc -I<安装目录>/include -I/usr/lib/gcc-lib/<新系统目录>//include" 的选项编译: 

 % gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc
 

使用 ldd 确定程式是用 glibc2 连结,而非旧有的 libc: 

 % ldd glibc
 libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.5.so (0x4000d000)
 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
 

如果通过编译,连结也确定, 并且执行时也产生 "hello world!" 的输出,那麽安装就成功了。 






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务