|
楼主 |
发表于 2002-11-10 22:21:07
|
显示全部楼层
LFS安装中文说明文档(二)
命令解释
--enable-static-link:该配置选项指示bash以静态链结方式编译。
--prefix=$LFS/usr:该配置选项将把Bash的所有文件安装在$LFS/usr目录下,在用户chroot以后,$LFS/usr就会变为/usr目录。
--bindir=$LFS/bin:该配置选项安装可执行程序在目录$LFS/bin中。这是因为bash程序应该安装在/bin,而不是/usr/bin。这样做的一个原因是/usr可能是一个独立于系统主分区的分区,在分区被加载以前一个用户会需要bash环境(例如没有bash环境启动脚本将无法执行)。
--with-curses:该参数指定bash链结curses库,而不是使用即将消失的termcap库。
ln -s bash sh:该命令创建名为sh的符号连接指向bash。大多数脚本都通过sh(在脚本第一行定义#!/bin/sh来调用sh)来运行的特定的脚本。
每条命令后的&&使得该命令后的命令只有在该命令正确执行结束的情况下才会继续执行。因为每条命令都只有在前一条命令正确执行的情况下才能执行。
内容
Bash软件包包包含bash shell程序
描述
Bash是一个"Bourne-Again SHell",在作为命令解释器得到了广泛的应用。Bash是一个从标准输入(一般是键盘)读取命令,用户在键盘上输入某些命令,Bash将读取输入加以解析然后执行该程序。
Binutils软件包
安装
使用下面的命令安装Binutils软件包:
./configure --prefix=$LFS/usr --disable-nls &&
make -e LDFLAGS=-all-static tooldir=$LFS/usr &&
make -e tooldir=$LFS/usr install
命令解释
make -e:参数-e指示make命令环境变量要优先于Makefile文件中定义的变量。这对于以静态链结方式编译Binutils是必须的。
LDFLAGS=-all-static:设置变量LDFLAGS的值为-all-static。、,使得binutils以静态方式链结。
tooldir=$LFS/usr:通常tooldir(binutils软件包的可执行程序存放目录)被设置为$(exec_prefix)/$(target_alias),使用变量代换以后一般为/usr/i686-pc-linux-gnu。但是由于我们仅仅创建自己的系统,因此在$LFS/usr中不需要这些特殊的目标目录。这只有在系统进行交叉编译(例如在Intel体系结构上编译程序,却在Apple的PowerPC机器执行)时才会有用。
内容
Binutils软件包包含如下工具程序:
gasp, gprof, ld, as, ar, nm, objcopy, objdump, ranlib, readelf, size, strings, strip, c++filt及 addr2line。
描述
gasp:编译器的宏预处理器。
gprof:显示调用段描述数据。
ld:链结多个对象文件和存档文件,重新定位数据,链结符号引用。常常是编译程序的最后一步被调用。
as:主要用于汇编gcc编译器的输出以供ld使用。
ar:创建、修改和读取存档文件。一个存档文件是一个包含多个其他文件的单个文件,其结构保证了可以从中得到原始的被包含文件。
nm:列出目标文件中的符号。
objcopy:拷贝一个目标文件中的内容到另外一个。objcopy使用GNU的BFD库来读写目标文件。它可以以一种不同于源目标文件的格式来写入目的目标文件。
objdump:显示关于一个或多个目标文件的信息。其参数控制显示哪些信息。这些信息对处理编译工具相关工作的程序员来说是非常有用的,而对于那些仅仅编译程序的程序员来说则没有太大用处。
ranlib:对存档文件的内容生成索引,并将其存放在存档文件中。索引列出是类型为可重定向目标文件的存档成员定义的每个符号。
readelf:显示关于elf格式的二进制文件的相关信息。
size:列出作为参数指定的每个目标文件的块(section)大小和整个大小。默认情况下每个目标文件或每个存档文件中的一个模块输出一行。
strings:对参数中指定的每个文件,strings打印文件中包含的长度至少为连续四个字符的可打印字符串(或者参数中指定的数字)。默认情况下其仅仅输出目标文件的初使和缓加载部分的字符串,对于其他类型的文件,其打印文件所有的内容。
strings主要用于决定非文本文件的内容。
strip:丢弃目标文件中的所有或特定的符号。目标文件列表可能包括存档文件(archives)。至少一个对象文件必须给出。strip修改参数中指定的文件,而不是将修改过的版本写入其他名字的文件中。
c++filt:C++语言提供了函数重载的功能,也就是能编写多个具有同样名字的函数(但是每个函数的参数是不同的)。所有的C++函数名被编码到较低级别的汇编标号当中。而c++filt程序则进行相反的匹配。它解码低级的标号到用户级的符号名,从而使得链接器能保持这些重载的函数,防止冲突。
addr2line:将程序地址转译成文件名和行号。给定一个地址和一个可执行程序,它通过使用可执行程序中的调试信息来计算哪个文件名和行号和给定的地址关联。
Bzip2软件包
安装
使用下面命令来安装软件包Bzip2:
sed s/"\$(CC) \$(CFLAGS) -o"/"\$(CC) \$(CFLAGS) \$(LDFLAGS) -o"/ Makefile | make -f - LDFLAGS=-static &&
make PREFIX=$LFS/usr install &&
cd $LFS/usr/bin &&
mv bzcat bunzip2 bzip2 bzip2recover $LFS/bin
命令解释
sed:该命令搜索Makefile文件中的字符串"$(CC) $(CFLAGS) -o"使用$(CC) $(CFLAGS) $(LDFLAGS) -o"来替代。这样使得更容易的以静态方式链结bzip2。
...Makefile | make -f -:Makefile十sed的最后一个参数,表示这个文件被搜索和替换。sed通常是发送修改过的文本到标准输出(常常为console)中。使用上面的命令sed的输出将被管道定向到make程序。通常make程序启动时常常试图寻找类似Makefile的文件,但是这里要使用修改过的Makefile文件内容,因此需要指示make使用修改过的文件内容。"-f -"参数就是指示make从不是Makefile的其他文件中读取make命令,这里-表示标准输入。另外一个实现方式是将sed的输出定向到一个文件中,然后指示make从该文件中读取。
LDFLAGS=-static:这是第二种静态链结软件包的方法。这也是最常见的方法。-all-static方式仅仅用于binutils和gettxt软件包,而不用于其他的软件包编译中。
内容
Bzip2软件包包含下列工具程序:
bzip2, bunzip2, bzcat和bzip2recover |
|