Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45994
  • 博文数量: 11
  • 博客积分: 380
  • 博客等级: 一等列兵
  • 技术积分: 122
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-14 19:58
文章分类
文章存档

2014年(2)

2010年(9)

我的朋友

分类: LINUX

2010-05-15 08:42:57

用LFS6.3 liveCD 编译 LFS6.6

环境为Ubuntu 9.04
Virtualbox虚拟机,挂载lfs6.3 livecd开机,选择时区,语言等。
vim /etc/X11/xorg.con
修改"Screen"段
去掉"Modes" 行的注释,删除掉开关的"1280x1024",保留"1024x768"
这样进入桌面后就不会被虚拟机窗口占掉整个桌面。

startx启动GUI,先用浏览器打开lfs6.6的在线手册:


开一个终端,准备分区:
cfdisk /dev/hda

/dev/hda1    256M    swap
/dev/hda2    7.8G    xfs

分好区后进行格式化:
mkswap /dev/hda1
swapon /dev/hda1
mkfs.xfs /dev/hda2

export LFS=/mnt/lfs
mkdir -pv $LFS
mount /dev/hda2 $LFS
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
cd $LFS/sources
wget wget-list
修改wget-list,将所有”ftp.gnu.org“替换为”gnu.mirror.iweb.com“,这是一个GNU镜像,在我这里速度还行,可以节省不少下载时间。

wget -c -i wget-list
wget将顺序从wget-list列表中下载所有需要的源码和补丁。

再开一个终端窗口,一边等待下载,一边做准备工作,一边安装下载好的包
export LFS=/mnt/lfs
mkdir -v $LFS/tools
ln -sv $LFS/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
su - lfs
------------------------------------
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
------------------------------------
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
------------------------------------
source ~/.bash_profile

做完以上工作后,Binutils已经下载完成了。

5.4.Binutils-2.20 - Pass 1
------------------------------------
tar xvf binutils-2.20.tar.bz2
mkdir binutils-build
cd binutils-build

../binutils-2.20/configure \
    --target=$LFS_TGT --prefix=/tools \
    --disable-nls --disable-werror
   
make

在编译make Binutils的漫长时间里还有点准备要做,gcc4.4的编译需要宿主系统安装有mpfr和gmp,趁这个时间先照着wget-list里面的URL,把mpfr和gmp下载下来编译在宿主系统中(可惜宿主是livecd,一重启就恢复不见了,明天还得重新编译一次,恨!)。

再开一个终端
wget
wget
依次tar xvf && configure && make && make install 略过不表
装好后退出终端,看看另两个终端,gcc已经下载完了,binutils也已经make 完成,继续执行:


case $(uname -m) in
  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac

make install
收尾。。。

5.5. GCC-4.4.3 - Pass 1
-------------------------------------
tar xvf gcc-4.4.3.tar.bz2
cd gcc-4.4.3
tar -jxf ../mpfr-2.4.2.tar.bz2
mv -v mpfr-2.4.2 mpfr
tar -jxf ../gmp-5.0.0.tar.bz2
mv -v gmp-5.0.0 gmp
mkdir -v ../gcc-build
cd ../gcc-build

../gcc-4.4.3/configure \
    --target=$LFS_TGT --prefix=/tools \
    --disable-nls --disable-shared --disable-multilib \
    --disable-decimal-float --disable-threads \
    --disable-libmudflap --disable-libssp \
    --disable-libgomp --enable-languages=c
   
make

make install

ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
    sed 's/libgcc/&_eh/'`


5.6. Linux-2.6.32.8 API Headers
--------------------------------------
tar xvf linux-2.6.32.8.tar.bz2
cd linux-2.6.32.8
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include

5.7. Glibc-2.11.1
--------------------------------------
tar xvf glibc-2.11.1.tar.bz2
mkdir glibc-build
cd glibc-build

case `uname -m` in
  i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;;
esac

../glibc-2.11.1/configure --prefix=/tools \
    --host=$LFS_TGT --build=$(../glibc-2.11.1/scripts/config.guess) \
    --disable-profile --enable-add-ons \
    --enable-kernel=2.6.18 --with-headers=/tools/include \
    libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes

make

make install

5.8 调整工具链

SPECS=`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/specs
$LFS_TGT-gcc -dumpspecs | sed \
  -e 's@/lib\(64\)\?/ld@/tools&@g' \
  -e "/^\*cpp:$/{n;s,$, -isystem /tools/include,}" > $SPECS
echo "New specs file is: $SPECS"
unset SPECS

5.9. Binutils-2.20 - Pass 2
--------------------------------------
cd $LFS/sources/binutils-build
因为刚才编译过一次,生成了一些文件,害怕会造成问题,先删掉再说
rm -rf *
再次configure:

CC="$LFS_TGT-gcc -B/tools/lib/" \
   AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \
   ../binutils-2.20/configure --prefix=/tools \
   --disable-nls --with-lib-path=/tools/lib

make

make install

make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin

5.10. GCC-4.4.3 - Pass 2
----------------------------------------
这一步受挫,暂时卡在这里了,有两个error提示。。。

------------------------------------------
我忽然发觉象这样COPY LFS BOOK很没意思,本想着给自己做个备忘,以便以后查看,但是转念一想,还不如直接看BOOK。。。。

GCC的问题莫名其妙,我删除gcc-4.4.3和gcc-build目录,重新解压后pass了,没什么错误。后面的步骤没什么说的了。

一个问题是lfs6.3 livecd将硬盘识别为hda,而6.6的新内核将IDE硬盘和SATA硬盘都识别为sda,设置grub时没注意,照样写的是hdaX,导致重启后无法进入系统。

由于对新版的grub配置不熟悉,我干脆删掉了grub,下载了老版本的grub-0.97编译安装,再手工编辑menu.lst,OK了。

下一步》》》BLFS
阅读(1703) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:BLFS安装备忘

给主人留下些什么吧!~~