CLFS2.0原理分析
主系统提供的工具包是否会带来“纯净度”的问题,我的一个观点就是这些工具只是处理诸如文本之类的于平台无关的文件,所以只要能够正确处理这类文件,就没问题,这是完全跟“纯净度”无关的因素。当然如果主系统提供的命令不适合或者版本太低,则需要象前面的提到的file和groff的方式一样——编译一个。
好了,在讲完第六章的的几个结论后,再来谈谈第六章编译的包的安装问题,对编译过程比较清楚的朋友基本上都了解一般软件包的编译过程 ./configure 若干参数 make make install 前两个命令没什么问题,最后一个make install,一般会将其安装到--prefix指定的目录中,而一般我们在参数中都是用--prefix=/usr这样的,这个参数是很重要的,有些包在运行过程中都可能受这个参数的影响,那么我们现在要安装到${CLFS}才行,如果用这样的--prefix=/usr参数,又用make install来安装的话,但愿你不是用root来执行的,否则你的系统就要被破坏了。这里正确的方法是用DESTDIR来指定“根”目录,如make DESTDIR=${CLFS} install,这很类似前面说明的--with-sysroot的概念,这里就不多说了,我在做憨牛包管理器的时候就用到了这个方法,很实用,但不是所有的包都支持,但大多数标准的gun包是支持的,可参考各个包的说明,也可以查看代码来确定。 最后要说的就是关于目标系统怎么样启动了,在发稿时为止CLFS2.0还是开发中的版本,而它目前也只有arm和x86两中体系,x86我们知道可以用grub来做启动,而arm却没有提到,各种体系都有各自的启动系统,可以参考CLFS1.0中的相应部分。 最后我们来尝试画一个CLFS2.0的逻辑图(图中未表达出--with-sysroot的作用,但不影响表达CLFS2.0的方法)。 ![]() 如果观察仔细的话会发现这副图里没有提到任何Linux的字样,因为我觉得这样的方法是适合其它类似的开源系统的,比如BSD。 (转载请保持文章的完整性,请注明作者和出处) 作者:冲天飞豹(youbest) Email:youbest@sina.com 2006年8月12日 附录: PowerPC的工具链制作过程及内核编译 环境设置过程(略) export CLFS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")" export CLFS_TARGET="powerpc-unknown-linux-gnu" echo export CLFS_HOST=\""${CLFS_HOST}\"" >> ~/.bashrc echo export CLFS_TARGET=\""${CLFS_TARGET}\"" >> ~/.bashrc Linux-Kernel-headers make include/linux/version.h install -dv ${CLFS}/usr/include/{asm,asm-generic,linux,net,mtd,scsi,sound} cp -av include/asm-generic/* ${CLFS}/usr/include/asm-generic cp -av include/linux/* ${CLFS}/usr/include/linux cp -av include/mtd/* ${CLFS}/usr/include/mtd cp -av include/net/* ${CLFS}/usr/include/net cp -av include/scsi/* ${CLFS}/usr/include/scsi cp -av include/sound/* ${CLFS}/usr/include/sound install -dv ${CLFS}/usr/include/asm-ppc cp -av include/asm-powerpc/* ${CLFS}/usr/include/asm cp -av include/asm-ppc/* ${CLFS}/usr/include/asm-ppc binutils-2.17 patch -Np1 -i ../binutils-2.17-posix-1.patch mkdir -v ../binutils-build cd ../binutils-build ../binutils-2.17/configure --prefix=${CLFS}/cross-tools \ --host=${CLFS_HOST} --target=${CLFS_TARGET} --with-sysroot=${CLFS} \ --disable-nls --enable-shared --disable-multilib make configure-host make make install cp -v ../binutils-2.17/include/libiberty.h ${CLFS}/usr/include glibc-2.4-headers cp configure{,.orig} sed -e 's/3.4/3.[0-9]/g' configure.orig > configure mkdir -v ../glibc-build cd ../glibc-build echo "libc_cv_forced_unwind=yes" > config.cache echo "libc_cv_c_cleanup=yes" >> config.cache echo "libc_cv_powerpc32_tls=yes" >> config.cache echo "libc_cv_ppc_machine=yes" > config.cache echo "libc_cv_mlong_double_128=yes" >> config.cache echo "libc_cv_mlong_double_128ibm=yes" >> config.cache echo "install_root=${CLFS}" > configparms CC=gcc ../glibc-2.4/configure --prefix=/usr \ --host=${CLFS_TARGET} --build=${CLFS_HOST} \ --with-headers=${CLFS}/usr/include --cache-file=config.cache make install-headers install -dv ${CLFS}/usr/include/bits cp -v bits/stdio_lim.h ${CLFS}/usr/include/bits touch ${CLFS}/usr/include/gnu/stubs.h cp -v ../glibc-2.4/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h \ ${CLFS}/usr/include/bits gcc-4.1.1第一遍 patch -Np1 -i ../gcc-4.1.1-posix-1.patch patch -Np1 -i ../gcc-4.1.1-cross_search_paths-1.patch mkdir -v ../gcc-build 上一篇:使用异步 I/O 大大提高应用程序的性能 下一篇:简析Linux与FreeBSD的syscall 更多相关文章
|
推荐文章
精彩文章
|