今天,就实验了一下昨天对于binutils,gcc和glibc的思考。我在内核3.6.0下升级的。
(参考资料:手把手教你构建自己的linux系统,lFS-7.2英文版,还有gcc,glibc的帮助文档README,INSTALL,及一些博客)
1、升级binutils
这个安装比较简单,注意一下configure 时的配置就行。
2. 升级gcc
gcc对make,perl等版本有要求,需先升级make,perl等(参考构建系统),注意gcc的configure 配置。gcc一般也不会有错。
3. 升级glibc
glibc升级对gcc,perl等有要求(已经升级)。一定要注意glibc的configure .
./configure --prefix=/usr--disable-profile --enable-add-ons --enable-kernel=2.6.26 --without-tls
以上是我用的配置。--with-headers=/usr/src/linux-x.x.x/include 这个我没用。因为我已升级到3.6.0内核。
据博客http://www.ibm.com/developerworks/cn/linux/l-cn-glibc-upd/index.html里说,内核版本较高时,不用指定内核头文件,前提条件是用命令:ls -l /lib/modules/$(uname -r) 查看,列出的最后一行是否有
source-> /usr/src/linux-3.6(这里我的是3.6)
有这行,则可以省略,否则要用选项--with-headers。
--without-tls:这个是防止c库存储的兼容性问题。这个要看make时是否有错,如果有错把这行给加上,没错可加可不加。我的当时老是make出错,然后加上这个,make就没问题了。
我出错最多的地方是: make install 总共29个错。 我发现,是跟gcc安装的时候弄的不是很清楚有关。
问题1. libc.so.6.0.17.py(这个记不准了,后缀没错)不是elf文件, 后来我跟其他linux机器对比发现,没有这个。 将 其 删掉。
问题2. 、/usr/bin/perl scripts/test-installation.pl /home/test/glic-build/
Unmatched (in regex; marked by<- HERE in m/$(<-HERE if $(abi-32-ld-soname),$(abi-32-ld-soname),ld/ at
scripts/test-installation.pl line 172,<LDD> line1.
make[1]:***[install] ERROR 29
make:***[install] 错误2
始终没有解决问题2.
”***“这样的错误应该是很严重的。照博客上说,应该启动不了机器才对。但是,我的机器启动了,查看binutils,gcc,glibc等的版本信息都对,暂时使用的命令也能运行,编写简单的程序编译运行也能行,不知道为什么?让人有点心虚。
补充下:我在/lib/ 下看了下文件的更改时间,然后将12年之前的文件删掉了(但这些文件时新库的链接文件链接的),想要重新全部启用新库,但是由于make install不成功,并没有生成,结果机器进不去了。问题是:库安装完后还有旧库文件吗?应不应该有?
请大家,指点一下,交流一下。
可以给我发邮件: 12_xia_zai@sina.cn