快速业务通道

完全手工打造自定义的LINUX

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-09
lfs 用户登录的时候,初始 shell 通常是一个登陆shell(login shell),它会读取宿主系统的 /etc/profile 文件(可能包含一些设置和环境变量),然后继续读取 .bash_profile 文件来完成登录初始化..bash_profile 文件中的 exec env -i.../bin/bash 命令用完全空的环境来取代当前的环境(除了继承 HOME, TERM, PS1 变量外).这样能保证我们的编译环境不会被宿主系统中不必要的或者有潜在危险的环境变量所影响,从而确保获得一个干净的工作环境.

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
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
source ~/.bash_profile
export
cd /mnt/lfs/sources/

二:构建临时编译环境.   这里的总体目标是提供一个临时环境,您可以 chroot 到这个环境,在里面构建一个干净、没有问题的目标 LFS 系统.为了尽量的与宿主系统分开,我们创建了一个自包含、自依赖的工具链.   1:Binutils第一遍   大家可以注意到后面所有的解包命令均使用tar xvf来完成,而不管文件的压缩方式是bz2还是gz,这是较新的tar程序都具有自动识别后缀名并自动调用相应的解压缩工具的能力,可以不需要指定压缩方式因LFS的LiveCD中提供的tar版本比较新,后面制作的tar版本也比较新,因此支持自动识别的能力,同时为了使文章的解压命令
看起来比较统一方便维护(同样对于想制作成脚本的朋友也会比较方便)因此后面统一使用tar xvf来解压.

tar xvf /lfs-sources/binutils-2.17.tar.bz2
cd binutils-2.17/
mkdir -v ../binutils-build
cd ../binutils-build/
CC="gcc -B/usr/bin/" ../binutils-2.17/configure --prefix=/tools --disable-nls --disable-werror
make
make install
make -C ld clean
make -C ld LIB_PATH=/tools/lib/
cp -v ld/ld-new /tools/bin
cd ..
rm -rf binutils-build/
rm -rf binutils-2.17/

 2:GCC第一遍

tar xvf /lfs-sources/gcc-4.1.2.tar.bz2
mkdir -v gcc-build
cd gcc-build/
CC="gcc -B/usr/bin/" ../gcc-4.1.2/configure --prefix=/tools
--with-local-prefix=/tools --disable-nls --enable-shared --enable-languages=c
make bootstrap
make install
ln -sv gcc /tools/bin/cc
cd ..
rm -rf gcc-build/
rm -rf gcc-4.1.2/

 3:Linux-2.6.22.5 API Headers

tar xvf /lfs-sources/linux-2.6.22.5.tar.bz2
cd linux-2.6.22.5/
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include
cd ..
rm -rf linux-2.6.22.5

 4:Glibc

tar xvf /lfs-sources/glibc-2.5.1.tar.bz2
cd glibc-2.5.1
mkdir -v ../glibc-build
cd ../glibc-build/
../glibc-2.5.1/configure --prefix=/tools --disable-profile
--enable-add-ons --enable-kernel=2.6.0 --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
cd ..
rm -rf glibc-build/
rm -rf glibc-2.5.1/

 5:调整并测试工具链

mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
gcc -dumpspecs | sed ''s@^/lib/ld-linux.so.2@/tools&@g'' >
`dirname $(gcc -print-libgcc-file-name)`/specs
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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号