|
本文用于解决如下问题:
- 以 Sysroot 方式,从源码构建完全本地编译的 GNU/Linux 系统。
- 官方 CLFS-Sysroot x86 方法中 Basic System 为交叉编译产物,本文方法中 Basic System 完全本地编译生成。
- 官方 CLFS-Sysroot 无 x86_64 系统构建方法,本文提供 CLFS-Sysroot x86_64-Pure64 方法,并且 Basic System 完全本地编译生成。
- 理论上,本文提供的方法亦适用其它平台架构。不具备本地编译条件的嵌入式平台请使用官方方法。
2008.6.11更新(添加官方资源)
2008.5.25除错(不再需要静态bash,第一次启动过程中udev也不再报错)
2008.4.24创建(谨以本文纪念中国A股印花税恢复为0.1%)
本文提供方法,最初使用的各软件包版本和补丁是参考 CLFS-SYSROOT-SVN-0.0.1-20080121、CLFS-TRUNK-SVN-20080228 中 x86、x86_64 部分。
CLFS-SYSROOT-SVN手册:- svn co [URL]http://svn.cross-lfs.org/svn/repos/cross-lfs/branches/clfs-sysroot/BOOK/[/URL]
复制代码 CLFS-TRUNK-SVN手册:- svn co [URL]http://svn.cross-lfs.org/svn/repos/cross-lfs/branches/clfs-sysroot/BOOK/[/URL]
复制代码 推荐参考官方手册最新版本 (2008.6.11 添加)
一、构建 x86 GUN/Linux 系统:
- 参考 CLFS-SYSROOT-SVN手册 x86 II.2. II.3. II.4.,根据自己需要完成设置。
- 参考 CLFS-SYSROOT-SVN手册 x86 III.5. 完成 toolchian。
- 参考 CLFS-TRUNK-SVN手册 x86 IV.6. 软件包编译顺序,按照 CLFS-SYSROOT-SVN手册 x86 IV.6. 提供的编译参数完成 Temporary System,交叉编译阶段到此为止。其中交叉编译 bash 时配置过程比较特殊,使用下面的步骤:
- cat > config.cache << eof
- ac_cv_func_mmap_fixed_mapped=yes
- ac_cv_func_strcoll_works=yes
- ac_cv_func_working_mktime=yes
- bash_cv_func_sigsetjmp=present
- bash_cv_getcwd_malloc=yes
- bash_cv_job_control_missing=present
- bash_cv_printf_a_format=yes
- bash_cv_sys_named_pipes=present
- bash_cv_ulimit_maxfds=yes
- bash_cv_under_sys_siglist=yes
- bash_cv_unusable_rtsigs=no
- gt_cv_int_divbyzero_sigfpe=yes
- eof
-
- ./configure --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --bindir=/bin \
- --without-bash-malloc \
- --cache-file=config.cache
复制代码 - 根据自己需要,参考 CLFS-TRUNK-SVN手册 x86 IV.7. 或 IV.8. 软件包编译顺序,按照 CLFS-SYSROOT-SVN手册 x86 III.5. 提供的编译参数完成 Temporary System 剩余部分。如果启动 Temporary System 发现 udev 报错,并且 /dev 下有设备文件,可安全忽略这些错误, 完成 Basic System 后就不会再报错了。(2008.5.25 已修正)
- 如果不准备运行各软件包测试,可以跳过这一步,参考 CLFS-TRUNK-SVN手册 x86 IV.9. 完成支持测试的软件包,请把/tools 替换为 /usr 或 /usr/local。
- 参考 CLFS-TRUNK-SVN手册 x86 IV.10. Temporary Perl 或 Perl 编译参数,完成Temporary Perl,请把/tools 替换为 /usr 或 /usr/local。
- 参考 CLFS-TRUNK-SVN手册 x86 IV.10. bash,完成一份临时的静态编译bash,请在运行 ./configure 时添加 --disable-shared,安装为 /bin/bash.static 并建立连接为/bin/sh。如果不做这一步,下一步安装 Ncurses 时,系统会挂起,完成 Basic System 后,可以删除 /bin/bash.static 并建立连接指向 /bin/bash 的 /bin/sh。(2008.5.25 不再需要)
- 参考 CLFS-TRUNK-SVN手册 x86 IV.10 软件包编译顺序,完成除 Temporary Perl 外所有软件包,完成本地编译的 Basic System。
二、构建 x86_64-Pure64 GUN/Linux 系统:
仿照上面构建 x86 GUN/Linux 系统的方法, 根据 CLFS-TRUNK-SVN手册 x86_64-64 修改相关变量, 并根据 CLFS-TRUNK-SVN手册 x86_64-64 使用相关pure64补丁, 即可完成本地编译的 Basic System.
- 参考 CLFS-SYSROOT-SVN手册 x86 II.2. II.3. II.4. 与 CLFS-TRUNK-SVN手册 x86_64-64 II.2. II.3. II.4.,根据自己需要完成设置。
- 参考 CLFS-SYSROOT-SVN手册 x86 III.5 与 CLFS-TRUNK-SVN手册 x86_64-64 III.5 提供的 pure64 补丁,完成 toolchian。
- 参考 CLFS-TRUNK-SVN手册 x86_64-64 IV.6. 软件包编译顺序及pure64补丁,仿照 CLFS-SYSROOT-SVN手册 IV.6. 提供的编译参数,完成 Temporary System,交叉编译阶段到此为止。其中交叉编译 bash 时配置过程比较特殊,使用下面的步骤:
- cat > config.cache << eof
- ac_cv_func_mmap_fixed_mapped=yes
- ac_cv_func_strcoll_works=yes
- ac_cv_func_working_mktime=yes
- bash_cv_func_sigsetjmp=present
- bash_cv_getcwd_malloc=yes
- bash_cv_job_control_missing=present
- bash_cv_printf_a_format=yes
- bash_cv_sys_named_pipes=present
- bash_cv_ulimit_maxfds=yes
- bash_cv_under_sys_siglist=yes
- bash_cv_unusable_rtsigs=no
- gt_cv_int_divbyzero_sigfpe=yes
- eof
-
- ./configure --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --bindir=/bin \
- --without-bash-malloc \
- --cache-file=config.cache
复制代码 - 根据自己需要,参考 CLFS-TRUNK-SVN手册 x86_64-64 IV.7. 或 IV.8. 软件包编译顺序及 pure64 补丁,仿照 CLFS-SYSROOT-SVN手册 x86 III.5. 提供的编译参数完成 Temporary System 剩余部分。如果启动 Temporary System 发现 udev 报错,并且 /dev 下有设备文件,可安全忽略这些错误,完成 Basic System 后就不会再报错了。(2008.5.25 已修正)
- 如果不准备运行各软件包测试,可以跳过这一步,参考 CLFS-TRUNK-SVN手册 x86_64-64 IV.9. 完成支持测试的软件包,请把/tools 替换为 /usr 或 /usr/local。
- 参考 CLFS-TRUNK-SVN手册 x86_64-64 IV.10. Temporary Perl 或 Perl编译参数,完成Temporary Perl,请把/tools 替换为 /usr 或 /usr/local。
- 参考 CLFS-TRUNK-SVN手册 x86_64-64 IV.10. bash,完成一份临时的静态编译bash,请在运行 ./configure 时添加 --disable-shared,安装为 /bin/bash.static 并建立连接为/bin/sh。如果不做这一步,下一步安装 Ncurses 时,系统会挂起,完成 Basic System 后,可以删除 /bin/bash.static 并建立连接指向 /bin/bash 的 /bin/sh。(2008.5.25 不再需要)
- 参考 CLFS-TRUNK-SVN手册 x86_64-64 IV.10 软件包编译顺序及 pure64 补丁,完成除 Temporary Perl 外所有软件包,完成本地编译的 Basic System。
|
|