LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2803|回复: 15

[尝试]用LFS的方法,RHEL的包来编译系统。

[复制链接]
发表于 2006-2-12 00:07:05 | 显示全部楼层 |阅读模式
我这次是一边开始一边写过程,所以我也不知道是否能成功,只当是个参考,有可能到后面会返回修改,不过作为尝试还是希望能抛砖引玉。
终极幻想版主我先开始了,看你怎么办。

先说明一点:我是在GCC3.4.4的LFS环境下开始的。还有我想先搞起i386的系统,所以我先从i386目录下下载的文件。

前面的准备工作就先不管了,按照LFS里的来。
重第5章开始
之前多准备一个rpm2cpio和cpio,之后解rpm,如下面的命令
rpm2cpio binutils-2.15.92.0.2-10.EL4.src.rpm
cpio -idmv < binutils-2.15.92.0.2-10.EL4.src.cpio

5.1 binutils-2.15.92.0.2 - Pass 1
tar xvf binutils-2.15.92.0.2.tar.bz2
cd binutils-2.15.92.0.2
patch -Np0 -i ../binutils-2.15.92.0.2-ar-xo.patch
patch -Np0 -i ../binutils-2.15.92.0.2-comdat-linkonce-mix.patch
patch -Np0 -i ../binutils-2.15.92.0.2-eh-frame-lsda.patch
patch -Np0 -i ../binutils-2.15.92.0.2-elfvsb-test.patch
patch -Np0 -i ../binutils-2.15.92.0.2-justsymbols.patch
patch -Np0 -i ../binutils-2.15.92.0.2-ldsoconf.patch
patch -Np0 -i ../binutils-2.15.92.0.2-ltconfig-multilib.patch
patch -Np0 -i ../binutils-2.15.92.0.2-place-orphan.patch
patch -Np0 -i ../binutils-2.15.92.0.2-prelink-strip.patch
patch -Np0 -i ../binutils-2.15.92.0.2-relro-fix.patch
patch -Np0 -i ../binutils-2.15.92.0.2-relro-gap.patch
patch -Np0 -i ../binutils-2.15.92.0.2-strings.patch
patch -Np0 -i ../binutils-2.15.92.0.2-stt_section-abs.patch
mkdir ../binutils-build
cd ../binutils-build
../binutils-2.15.92.0.2/configure --prefix=/tools --disable-nls
make
make install
make -C ld clean
make -C ld LIB_PATH=/tools/lib

此步骤目前顺利通过。
发表于 2006-2-12 00:47:46 | 显示全部楼层
什么是binutils-2.15.92.0.2-10.EL4.src.rpm?它已有升级版了,应该是-15了,只是多几个patch。
我试过了,glibc的patch打不上,你可以试试
还有就是解压分两条命令会很慢,建议rpm2cpio file.rpm | cpio -id
回复 支持 反对

使用道具 举报

发表于 2006-2-12 00:49:19 | 显示全部楼层
Post by youbest
../binutils-2.16.1/configure --prefix=/tools --disable-nls

???2.16.1???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 00:56:40 | 显示全部楼层
Post by 线头
???2.16.1???

写错了,在原文中已改正。谢谢。
回复 支持 反对

使用道具 举报

发表于 2006-2-12 01:49:31 | 显示全部楼层
为啥不把所有的都贴在第一个帖子呢。:)。这样多了就不用找了。

解rpm的方法:

http://www.linuxsir.cn/bbs/showthread.php?t=150144
帖子的3楼。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 01:51:33 | 显示全部楼层
5.2. GCC-4.0.0-20041214 - Pass 1
tar xvf gcc-4.0.0-20041214.tar.bz2
cd gcc-4.0.0-20041214
patch -Np0 -i gcc4-builtin-mathfn-save.patch
patch -Np0 -i gcc4-gnuc-rh-release.patch
patch -Np0 -i gcc4-ice-hack.patch
patch -Np0 -i gcc4-range-enum.patch
patch -Np0 -i gcc4-stdarg.patch
patch -Np0 -i gcc4-chk.patch
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-4.0.0-20041214/configure --prefix=/tools --with-local-prefix=/tools --disable-nls --enable-shared --enable-languages=c
make bootstrap
make install
ln -vs gcc /tools/bin/cc

此步骤目前已通过,中间出了一点问题,不过是我自己引起的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 01:57:29 | 显示全部楼层
5.3. glibc-kernheaders
tar xvf glibc-kernheaders.tar.bz2
cd usr
cp -Rv include/asm-i386 /tools/include/asm
cp -Rv include/linux /tools/include

这个包相当于LFS手册里面的Linux-Libc-Headers

不过这是一个2.4内核的头文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 19:51:46 | 显示全部楼层
5.4. Glibc-20041219T2331
tar xvf glibc-20041219T2331.tar.bz2
cd glibc-20041219T2331
patch -Np1 -i ../glibc-nptl-check.patch
mkdir -v ../glibc-build
cd ../glibc-build
../glibc-20041219T2331/configure --prefix=/tools --disable-profile --enable-add-ons --with-binutils=/tools/bin --without-gd --with-headers=/tools/include --without-selinux
make
mkdir -v /tools/etc
touch /tools/etc/ld.so.conf
make install


此步骤目前已通过,确实在编译过程中遇到了一些问题,自己写了一个补丁,现在已经解决了。(补丁稍后放上来)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 19:54:45 | 显示全部楼层
5.5. 调整工具链(Adjusting the Toolchain)
cd binutils-build
make -C ld install
cd ..

SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &&
gcc -dumpspecs > $SPECFILE &&
sed 's@^/lib/ld-linux.so.2@/tools&@g' $SPECFILE > tempspecfile &&
mv -vf tempspecfile $SPECFILE &&
unset SPECFILE

GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include &&
find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
unset GCC_INCLUDEDIR


echo 'main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /tools'
测试了一下,目前状态正常,此步骤顺利通过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 20:01:13 | 显示全部楼层
5.6. Tcl-8.4.7-2
tar xvf tcl8.4.7-src.tar.gz
cd tcl8.4.7
patch -Np1 -i ../tcl-8.3.5-tclm4-soname.patch
patch -Np1 -i ../tcl-8.4.5-lib-perm.patch
patch -Np1 -i ../tcl8.3.5-tclConfig-package-path-90160.patch
patch -Np1 -i ../tcl-8.4-no_rpath.patch
patch -Np1 -i ../tcl-8.4-autoconf.patch
cd unix/
./configure --prefix=/tools
make
make install
ln -sv tclsh8.4 /tools/bin/tclsh

此步骤目前顺利通过。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表