LinuxSir.cn,穿越时空的Linuxsir!

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

从0开始LFS6.7

[复制链接]
发表于 2010-9-26 09:23:42 | 显示全部楼层 |阅读模式
LFS是Linux From Scratch 的简称(中文:拼凑的Linux),它是从源代码开始编译的一个真实可用的Linux,它是学习linux的利器,特别适合从Windows转到Linux上程序开发人员。它最早由Gerard Beekmans发起的。官方网址:http://www.linuxfromscratch.org/,9月18号发布了稳定版本是:6.7。有一个在线的LFS6.6的中文文档地址:“http://www.tztsg.com/lfs/index.html”。如果你认为LFS是一个发行版本那就大错特错。它不提供软件,所有的软件都需要你自己下载,它提供的只是个几百K的小小文档。我们可以称之为“书”的东西。“书”在百度百科中这么定义的:“书是人类用来纪录一切成就的主要工具,也是人类交融感情,取得知识,传承经验的重要媒介”。LFS只告诉你知识,不提供产品,一切都得靠自己,我将编译这个版本的“LFS6.7”。

    我接触到LFS是在去年年底。我们工程文件中心二期改造的项目可能要用到Linux,linux很早以前也玩过两天,可是那个时候它对硬件兼容性不是特别好。下载的发行版本是iso的镜像文件,不太容易找到刻录光驱。还有一个原因就是网络不发达,找到资料比较难,即使有资料也大多是英文的,我的英文水平和小沈阳一个级别的,所以一直也就放着。现在的情况已经好了。我将我做“LFS”的一些经验,写出来和大家分享,必尽绕路浪费的油钱够儿子买好多棒棒糖。我将在我的机器上安装,windows,ubuntu,和LFS。Ubuntu是一个Linux的发行版本,它最大的特点就是方便,对主流硬件的支持非常好,“163”和“sohu”都有ubuntu的镜像。下载和更新速度都非常快,用“鸟哥”的话说,离开了更新Linux就是一个屁。
    编译“LFS”是需要一个宿主,我把ubuntu作为宿主,LFS编译时间非常长,最少需要2-3天时间,所以,下班之后可以直接让机器休眠,第二天继续,前面几个部分主要是为构建这个宿主。后面部分是根据"LFS"文档,结合我自己做的经验,将脚本提取出来,便于复制粘帖用的,有一些关键的内容被“LFS”文档一笔带过,比如分区,内核编译,这些对于初接触linux的朋友来说,会是一个卡;由于“LFS”编译的时间会非常长,有的时候会发生这样或那样的错误,需要恢复环境,我也会比较啰嗦。

    你可以把这个文章copy到你的手机中,安装宿主的时候可以拿来翻看。

一、安装宿主系统。

    “LFS”需要一个宿主,这是高度定制的Linux系统都需要的,比如“Gentoo,slckware”等。从2003年开始,主流的主板就开始支持从U盘启动了,如果需要安装系统非常简单将“启动U盘”插入,从U盘引导。LFS文档中有一节是说明对宿主系统的要求,我打算用Ubuntu作为的宿主,来编译我的LFS,我用的是ubuntu-10.04-desktop-i386,可在:“http://mirrors.sohu.com”下载。

    我这边有一个可直接启动的Ubuntu的启动U盘,谁需要和我要一下。

    我机器上以前已经有了一个Windows,并且我的分区已经满了。我在网上找到了一个软件“pqmagic9.0”它可以动态调整硬盘的分区,可添加删除分区,动态调整分区的大小。可以支持windows7,和Vista。以前的8.0好像有些问题。因为调整分区非常有风险。所以建议再调整分区之前先把所有的重要的文件备份一下啊。
    硬盘只能支持4个主分区,这和历史局限性有关系,我把windows放在第一个分区,在linux下看上是“/dev/sda1”,将ubuntu放在第二个主分区,“/dev/sda2”,将交换分区放在,“/dev/sda3”现在这些分区已经足够了,我们安装完Ubuntu后再通过“fdisk”来分余下的空间。
    一般对于多系统,都是先安装windows,再安装Ubuntu,用Ubuntu提供的引导程序“GRUB”来引导所有的系统,包括LFS,我不打算安装LFS的引导系统。所以“LFS文档”中的第8章,用“GRUB”引导系统可以省略。如果windows需要重新安装的话,它会再次覆盖掉“GRUB”写入的MBR。所以对于多系统环境下,重新安装windows,需要备份“mbr”,windows安装完成之后,用Ubuntu的引导盘进入“live CD”模式,再恢复一下“mbr”。

备份MBR

恢复MBR

如果没有备份MBR的情况下。


    插入Ubuntu的启动盘,选择U盘启动,Ubuntu的安装非常简单,只需要做几道选择题,其中需要注意的是分区部分,前面的内容我就省略了,直接进入第4步。

    必须选择“手动指定分区(高级)”选项,其他的都不适合。
    第五步,选中“空闲”->“添加”。选择主分区,我将分配60G给,Ubutnu使用,挂载点选“/”,用于:”ext4 日志文件系统“。因为默认已经有一个windows分区。确定之后会出现“/dev/sda2”这个设备。再选择“空闲”。选择“主分区”,大小选择内存的2倍,起始位,用于“交换分区”,确定。其他的分区等ubuntu安装完成之后用“fdisk”再分其他的分区。
    其他的都默认选择完成安装。

二、更新系统用于满足LFS对宿主的要求

1、选择一个最快的服务器
    "系统"->“系统管理”->“软件源”->“选择最佳服务器”。
2、安转宿主必须的软件包。
    先打开一个终端:“应用程序”->“附件”->"终端"。从“文档”前言中的《vii. Host System Requirements》中的一个“version-check.sh”这一大段脚本复制出来,终端的粘帖快捷键是“Ctrl+Shift+v”。执行一下,发现缺少了几个包,切换到root用户,安装vim m4 bison patch texinfo软件包,用以下命令。

--命令:----------
sudo su
apt-get install vim m4 bison patch texinfo
--结束:----------

三、准备一个新分区

   建议在第一次做的时候只分配一个根分区,交换分区(swap)于ubuntu的共享,先取得root用户权限:"sudo su",接着查看一下你硬盘的分区情况“fdisk -l”。找到如果你的硬盘的设备号,我的是“/dev/sda”。然后执行“fdisk /dev/sda”。fdisk分区抄作比较简单,"m"帮助,里面列出来了所有的命令。“p”:查看分区情况。n:添加分区(主分区,或者扩展分区),t:改变分区的类型,w:保存(确认无误之后一定要保存);q:退出。d:删除(特别注意的是,删除要从后往前删,否则可能会出问题,我遇到过几次,可能是因为,windows下的分区软件和Linux不一样吧,不确定,反正从后往前删除就不会错了。)
   我先建立了一个扩展分区,然后再在上面分出来3G的空间,就是“/dev/sda5”了。

四、准备工作


2.3. 在这个分区上创建文件系统

我打算将文件系统格式化成:ext4。
使用以下命令:
mke2fs -t ext4 /dev/sda5


2.4. Mounting the New Partition

    和书上略有不同,文件系统我选择的是ext4.

export LFS=/mnt/lfs
mkdir -pv $LFS
mount -v -t ext4 /dev/sda5 $LFS


wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。
wget -r -np -nd http://example.com/packages/
这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。
wget -r -np -nd --accept=iso http://example.com/centos-5/i386/
与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。
wget -i filename.txt
此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。
wget -c http://example.com/really-big-file.iso
这里所指定的 -c 选项的作用为断点续传。
wget -m -k (-H) http://www.example.com/
该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。

sohu上有6.7的源码包,直接下载就ok了。这里我多下载了一个wget,打算把这个包也安装进去。

cd $LFS
wget -c http://mirrors.sohu.com/lfs/lfs-packages/lfs-packages-6.7.tar
wget -c http://ftp.gnu.org/gnu/wget/wget-1.12.tar.bz2

解压:
tar -xf lfs-packages-6.7.tar
删除打包文件,如果你还想留在用就“mv lfs-packages-6.7.tar ~/”到别的地方。

因为我们直接下载的源码包,接下来,只需要修改权限,添加lfs用户,通过以下命令列表,完成准备前工作。


#-----------------    添加用户
chmod -v a+wt $LFS/sources
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

#----------------    设置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

五、编译工具链

我已将工具链中的脚本放到了 20.sh中。如果你嫌麻烦可以在终端中,直接执行“bash 20.sh”。当然你也可以复制,粘贴来执行,这部分的脚本都没带测试,因为,测试在这个阶段没有意义。

我用的是6.7版本,可以用6.6的中文版对照,我还是用6.7的章节号。
5.32. 清理系统
之后需要切换到"root"用户,用“exit”命令。

5.33. 改变所有者
chown -R root:root $LFS/tools

特别说明:如果在做工具链一不小心重新启动了,就需要恢复状态,基本上是以下几步。

sudo su
export LFS=/mnt/lfs
mount -v -t ext4 /dev/sda5 $LFS
su - lfs


六、安装基础系统软件

我将所有的脚本都做到了,“60.sh”中,方便大伙复制粘帖。
对于多核的cpu在编译时可以采用“make -j8”,表示用8个核心编译,如果少于8个的话,这样写也没有问题。
这个地方是官方测试的log文件:“http://www.linuxfromscratch.org/ ... 果比较一下,

我将和“文档中不一样的地方列出”。严格按照书上说的顺序来。

如果编译的时候,出现了问题的话,可以通过以下命令恢复环境。

sudo su
export LFS=/mnt/lfs
mount -t ext4 /dev/sda5 $LFS
mount -v --bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
chroot "$LFS" /tools/bin/env -i \
    HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
    /tools/bin/bash --login +h


6.9. Glibc-2.12.1

测试这个包,最有可能出问题。如果发现了问题,可以将错误的提示信息放到"google"去搜索一下,有些是偶发性的,我也说不好。如果不是非常严重的都可以pass掉。

在安装字符支持时,不需要所有的都装,只装一些与中文有关的就可以了。

localedef -i en_US -f ISO-8859-1 en_US
localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i zh_CN -f GB18030 zh_CN.GB18030
localedef -i zh_CN -f GB2312 zh_CN.GB2312
localedef -i zh_CN -f GBK zh_CN.GBK
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8

可参见“60.sh”


7.4. 配置 setclock 脚本

   这一节的配置时间,我一直没搞对,哪位知道告我一声,我用的是默认的配置,不影响。

7.5. 配置 Linux 控制台

   这一节pass掉,consle对中文没意义。

7.8. Bash Shell 启动文件

   编辑profile文件,一些环境变量的设置,你可以用"set"命令查看所有的环境变量

cat > /etc/profile << "EOF"
# Begin /etc/profile

umask 022
export LANG=en_US.iso88591
LC_ALL=en_US.iso88591 locale language
if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@$(uname -n):\w\$ '
    if [ -f /etc/bash.bashrc ]; then
        . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi
EOF

7.11. 配置 localnet 脚本
   
    你也可以随便给你的机器起一个名字。

    echo "HOSTNAME=lfs6.7" > /etc/sysconfig/network

7.12. 定制 /etc/hosts 文件

   就是定义一个ip给eth*使用的。根据你的网络情况自己配,

cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)

127.0.0.1 localhost
193.168.1.188 xiongying-lfs6.7

# End /etc/hosts (network card version)
EOF


7.13. 配置网络脚本


    根据实际的网络配置,ip,网关等。


cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=193.168.1.188
GATEWAY=193.168.1.1
PREFIX=24
BROADCAST=193.168.1.255
EOF

    配置主机名,域名服务地址,根据自己的实际情况:

cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf

domain xy-lfs6.7
nameserver 210.73.128.10

# End /etc/resolv.conf
EOF

8.2. 创建 /etc/fstab 文件

   这个文件是默认情况加载的文件系统,就我现在的情况下,修改如下,如果你还需要挂别的分区的话也可以在这里写。

cat > /etc/fstab << "EOF"
# Begin /etc/fstab

# file system  mount-point  type   options         dump  fsck
#                                                        order

/dev/sda5     /            ext4  defaults        1     1
/dev/sda3     swap         swap   pri=1           0     0
proc           /proc        proc   defaults        0     0
sysfs          /sys         sysfs  defaults        0     0
devpts         /dev/pts     devpts gid=4,mode=620  0     0
tmpfs          /dev/shm     tmpfs  defaults        0     0
# End /etc/fstab
EOF

8.3. Linux-2.6.32.8

   大部分系统因为没有这一部分没有配好,这这里有一个配置好的文件,除了网卡没有加载,其他都加载了。我试了几台机器,基本都可以,其中ext4文件系统一定要编译进内核。要不然就启动不了。对于usb键盘的机器“HID Devices”这个一定要编译进去,我这这个地方搞了很长时间。Processor type and features,中选择你的CPU的类型。
   大伙可以参看,鸟哥的内核编译的内容。和我上次上传的一个2.6.31的内核参考。
   具体如何使用:
   
   将"config-ok"拷贝到,souces/linux-2.6.32.8根目录中。

make clean
make mrproper
make menuconfig

选择“Load an Alternate Configuretion File” 输入"config-ok",修改“General setup ”->"Local version"加入你喜欢的名字。

在驱动程序列中,找到对应的网卡。

配置完成直接退出,提示要你保存。yes。

之后make。

按照书上的步骤来。


8.4. 使用 GRUB 配置启动过程

   这部分省略。直接用ubuntu自带的GRUB启动
   
echo 6.6 > /etc/lfs-release
umount -v $LFS/dev/pts
umount -v $LFS/dev/shm
umount -v $LFS/dev
umount -v $LFS/proc
umount -v $LFS/sys

直接,logout,



七、配置ubuntu的Grub。

   超级简单,打开一个终端,

sudo su
grub-mkconfig -o /boot/grub/grub.cfg

完成之后,你cat /boot/grub/grub.cfg文件就会发现多了一个启动选项。

哈哈,如果一起顺利你的新的LFS将会启动。

人生不如意十有八九。

如果不幸你的LFS没有启动的话。我们再进入ubuntu.从新chroot进去命令如下:

sudo su
export LFS=/mnt/lfs
mount -t ext4 /dev/sda5 $LFS
mount -v --bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
chroot "$LFS" /usr/bin/env -i \
    HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /bin/bash --login

之后可以先查看一下 /var/log/kern.log文件,看看是什么情况,或者查看sys.log。

再编译一次内核,再启动,good luck!
发表于 2010-10-29 18:31:32 | 显示全部楼层
兄弟的脚本在哪里? 我想看看
回复 支持 反对

使用道具 举报

发表于 2010-10-29 19:30:16 | 显示全部楼层
这位仁兄,没有找着你的脚本,能否提供一下,其实我的疑问是编译工具链的时候,里面的文件夹切换我有点不明白,例如:
书中编译第一个软件
mkdir -v ../binutils-build
cd ../binutils-build
我当前在/binutils-build下面

是不是这样理解:
$LFS/sources
$LFS/tools
$LFS/binutils-build

然后执行下面这个命令:

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

但明明binutils-2.20.1是在解压在$LFS/sources中,../之后明显就回到了$LFS/这一层目录
我很不明白命令是在那一层目录下的,虽然我调调照样能编译完,担后面又来了
编译GCC时又这样:

书中原文

tar -jxf ../mpfr-3.0.0.tar.bz2
mv -v mpfr-3.0.0 mpfr
tar -jxf ../gmp-5.0.1.tar.bz2
mv -v gmp-5.0.1 gmp
tar -zxf ../mpc-0.8.2.tar.gz
mv -v mpc-0.8.2 mpc

按他这样写,我的理解就是在$LFS/sources目录中进行的如上命令
也就是
$LFS/sources/mpfr
$LFS/sources/gmp
$LFS/sources/mpc

然后又建立目录
mkdir -v ../gcc-build
cd ../gcc-build

我想问一下,这个GCC-build建立的时候,是以那个目录为相对路径的?
我是在$LFS/
还是在$LFS/sources目录下建立的?

建立完后是这样的$LFS/gcc-build
还是$LFS/sources/gcc-build ?

接着又是执行命令
../gcc-4.5.1/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 \
    --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
    --without-ppl --without-cloog
我还是不明白,是在那一个目录下执行的,这个疑问困扰我很久啊,非常难受
特别是$(pwd)/gmp ,这里要知道执行命令的当前目录,我最不明白的是这些命令执行的当前目录,也是最大的疑问。

LFS的文档真的是不如gentoo写的仔细,Gentoo的文档照着做一遍就完成了,到LFS,我是一步一个疑问一个不解啊!
希望这位仁兄能解释一二,帮个忙.谢过先!
回复 支持 反对

使用道具 举报

发表于 2010-10-30 20:10:19 | 显示全部楼层
谢谢分享,thanks
回复 支持 反对

使用道具 举报

发表于 2010-10-31 08:48:34 | 显示全部楼层
Post by linuxiou;2117754
这位仁兄,没有找着你的脚本,能否提供一下,其实我的疑问是编译工具链的时候,里面的文件夹切换我有点不明白,例如:
书中编译第一个软件
mkdir -v ../binutils-build
cd ../binutils-build
我当前在/binutils-build下面

是不是这样理解:
$LFS/sources
$LFS/tools
$LFS/binutils-build

然后执行下面这个命令:

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

但明明binutils-2.20.1是在解压在$LFS/sources中,../之后明显就回到了$LFS/这一层目录
我很不明白命令是在那一层目录下的,虽然我调调照样能编译完,担后面又来了
编译GCC时又这样:

书中原文

tar -jxf ../mpfr-3.0.0.tar.bz2
mv -v mpfr-3.0.0 mpfr
tar -jxf ../gmp-5.0.1.tar.bz2
mv -v gmp-5.0.1 gmp
tar -zxf ../mpc-0.8.2.tar.gz
mv -v mpc-0.8.2 mpc

按他这样写,我的理解就是在$LFS/sources目录中进行的如上命令
也就是
$LFS/sources/mpfr
$LFS/sources/gmp
$LFS/sources/mpc

然后又建立目录
mkdir -v ../gcc-build
cd ../gcc-build

我想问一下,这个GCC-build建立的时候,是以那个目录为相对路径的?
我是在$LFS/
还是在$LFS/sources目录下建立的?

建立完后是这样的$LFS/gcc-build
还是$LFS/sources/gcc-build ?

接着又是执行命令
../gcc-4.5.1/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 \
    --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
    --without-ppl --without-cloog
我还是不明白,是在那一个目录下执行的,这个疑问困扰我很久啊,非常难受
特别是$(pwd)/gmp ,这里要知道执行命令的当前目录,我最不明白的是这些命令执行的当前目录,也是最大的疑问。

LFS的文档真的是不如gentoo写的仔细,Gentoo的文档照着做一遍就完成了,到LFS,我是一步一个疑问一个不解啊!
希望这位仁兄能解释一二,帮个忙.谢过先!


http://www.linuxfromscratch.org/ ... alinstructions.html
看这里
To re-emphasize the build process:

      1. Place all the sources and patches in a directory that will be accessible from the
   chroot envronment such as /mnt/lfs/sources/.  Do not put sources in /mnt/lfs/tools/.
2. Change to the sources directory.
3. For each package:
   a. Using the tar program, extract the package to be built.
   b. Change to the directory created when the package was extracted.
   c. Follow the book's instructions for building the package.
   d. Change back to the sources directory.
   e. Delete the extracted source directory and any <package>-build
      directories that were created in the build process.
回复 支持 反对

使用道具 举报

发表于 2010-10-31 23:56:04 | 显示全部楼层

非常感谢您的回答

Post by wywgk;2117906
http://www.linuxfromscratch.org/ ... alinstructions.html
看这里
To re-emphasize the build process:

      1. Place all the sources and patches in a directory that will be accessible from the
   chroot envronment such as /mnt/lfs/sources/.  Do not put sources in /mnt/lfs/tools/.
2. Change to the sources directory.
3. For each package:
   a. Using the tar program, extract the package to be built.
   b. Change to the directory created when the package was extracted.
   c. Follow the book's instructions for building the package.
   d. Change back to the sources directory.
   e. Delete the extracted source directory and any <package>-build
      directories that were created in the build process.


===================
按照指南的描述,我这样理解的不知道有没有错,请指正。

首先建立了
$LFS/sources
tar源文件包与Patch包都在sources目录下

我当前处于
$LFS/sources
需要解压第一个包来进行编译
$LFS/sources $tar -xvf binutils-2.20.1.tar.gz
解压完后会产生一个binutils-2.20.1源码目录在souces目录中
也就是如果执行
$LFS/sources $ ls
有这样的结果
binutils-2.20.1.tar.gz binutils-2.20.1 ……后面的省略

然后我的问题来了,下面这两条命令是在哪个目录下执行的?
mkdir -v ../binutils-build
cd ../binutils-build

也就是当解压完包后,是否是下面这样执行的?
$LFS/sources $cd binutils-2.20.1
$LFS/sources/binutils-2.20.1 $mkdir -v ../binutils-build
$LFS/sources/binutils-2.20.1 $cd ../binutils-build
$LFS/sources/binutils-build $

如果是这样,我真的有点不能理解,为可需要这样做,如果只是为了建立一个专门编译的目录,完全没有必要进入到源码目录中去以这样的方式建立啊,解压完源码后直接下面这样做不就可以了?
$LFS/sources $tar -xvf binutils-2.20.1.tar.gz
$LFS/sources $mkdir -v binutils-build
$LFS/sources $cd binutils-build
这样做不是一样的结果?

然后执行编译命令
$LFS/sources/binutils-build $../binutils-2.20.1/configure \
    --target=$LFS_TGT --prefix=/tools \
    --disable-nls --disable-werror

这里虽然有疑问,但是我还是编译完成了,对上面建立编译目录的步骤有点不明白这样的做意义为何?
回复 支持 反对

使用道具 举报

发表于 2010-11-12 09:28:33 | 显示全部楼层
哥们儿,能提供以下你的脚本么?
回复 支持 反对

使用道具 举报

发表于 2010-12-5 02:34:36 | 显示全部楼层
Post by boycq;2119562
哥们儿,能提供以下你的脚本么?


如果要用脚本的,就干脆 jhalfs 来得快。
回复 支持 反对

使用道具 举报

发表于 2010-12-6 12:57:23 | 显示全部楼层
是这样的, LFS省略了一个步骤就是,
每次$ tar jxf XXXX.bz2 之后, 你需要 $cd XXX.
也就是说 每次操作都是在 $LFS/sources/XXX目录下面的。
回复 支持 反对

使用道具 举报

发表于 2011-2-1 09:37:17 | 显示全部楼层
线程太多了也不好。一般双核的用make -j4,四核的用8,单核的用2
回复 支持 反对

使用道具 举报

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

本版积分规则

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