|
从源码构建本地编译GNU/Linux系统(gcc-4.3.1)
2008.07.16 更新 交叉编译工具链 创建方法,升级一个相关软件包file-4.25
2008.06.23 创建
本文解决如下问题:
- 以 Sysroot 方式,从源码构建本地编译的 GNU/Linux 系统。
- 官方 CLFS-Sysroot x86 方法中 Basic System 为交叉编译产物,本文方法中 Basic System 本地编译生成。
- 官方 CLFS-Sysroot 无 x86_64 系统构建方法,本文提供 CLFS-Sysroot x86_64-Pure64 方法,并且 Basic System 本地编译生成。
- 理论上,本文提供的方法亦适用其它平台架构。不具备本地编译条件的嵌入式平台请使用官方方法。
- 升级到 gcc-4.3.1 。
本文为 Sysroot 方式从源码构建完全本地编译的 GNU/Linux 系统 升级姊妹篇
宿主系统需求:
- Bash-2.05a
- Binutils-2.12
- Bison-1.26a
- Bzip2-1.0.2
- Coreutils-5.0
- Diffutils-2.8
- Findutils-4.1.20
- Gawk-3.0
- Gcc-2.95.3
- Glibc-2.2.5
- Grep-2.5
- Gzip-1.2.4
- Make-3.79.1
- Patch-2.5.4
- Sed-3.0.2
- Tar-1.14
- Texinfo
- file-4.21
- perl
- gmp-4.2.2
- mpfr-2.3.1
具体过程如下:(适用于x86/x86_64,摘自笔者编译脚本)
〇、root用户准备工作
- 全局设置
- NEW_OS=x86_64-linux-gnu [color=Orange]#自定义,用于工作目录、用户名[/color]
- NEW_OS_ARCH=x86_64 [color=Orange]#处理器架构,x86系统请修改为i386[/color]
- NEW_OS_TARGET=x86_64-unknown-linux-gnu [color=Orange]#目标系统类型,x86系统请根据自己需要修改,如i686-pc-linux-gnu[/color]
- NEW_OS_HOST=$(echo ${MACHTYPE} | sed -e "s@$(echo ${MACHTYPE} | cut -d- -f2)@cross@")
- NEW_OS_MARCH=$(echo ${NEW_OS_TARGET} | cut -d- -f1)
- NEW_OS_DIR=/${NEW_OS}
- SOURCE=${NEW_OS_DIR}/source
- TOOLS=${NEW_OS_DIR}/tools
- PACKAGE=${NEW_OS_DIR}/package
- MARK=${NEW_OS_DIR}/mark
- ROOTFS=${NEW_OS_DIR}/rootfs
- FAKEROOT=${NEW_OS_DIR}/fakeroot
- NEW_OS_NO_LIB64_DIR=yes
- NEW_OS_USER=${NEW_OS}
- NEW_OS_ID=1000
复制代码 - 建立工作目录、用户、用户环境
- mkdir -pv ${NEW_OS_DIR}/bin \
- ${SOURCE} \
- ${TOOLS} \
- ${PACKAGE} \
- ${MARK} \
- ${ROOTFS} \
- ${FAKEROOT}
- touch ${NEW_OS_DIR}/${NEW_OS_TARGET}
- cp -a ${NEW_OS_SCRIPT_DIR} ${NEW_OS_DIR}/bin
- groupadd -o -g ${NEW_OS_ID} ${NEW_OS_USER}
- useradd -o -d ${NEW_OS_DIR} -u ${NEW_OS_ID} -g ${NEW_OS_ID} -s /bin/bash ${NEW_OS_USER}
- passwd ${NEW_OS_USER}
- cat > ${NEW_OS_DIR}/.bash_profile << eof
- exec env -i HOME=\${HOME} TERM=\${TERM} PS1='\u@\h:\w\\$ ' /bin/bash
- eof
- cat > ${NEW_OS_DIR}/.bashrc << eof
- set +h
- umask 022
- export LC_ALL=POSIX
- export PATH=${TOOLS}/bin:/usr/bin:/bin
- eof
- echo "export NEW_OS=${NEW_OS}" >> ${NEW_OS_DIR}/.bashrc
- echo "export NEW_OS_ARCH=${NEW_OS_ARCH}" >> ${NEW_OS_DIR}/.bashrc
- echo "export NEW_OS_TARGET=${NEW_OS_TARGET}" >> ${NEW_OS_DIR}/.bashrc
- echo "export NEW_OS_HOST=${NEW_OS_HOST}" >> ${NEW_OS_DIR}/.bashrc
- echo "export NEW_OS_MARCH=${NEW_OS_MARCH}" >> ${NEW_OS_DIR}/.bashrc
- echo "export NEW_OS_DIR=${NEW_OS_DIR}" >> ${NEW_OS_DIR}/.bashrc
- echo "export SOURCE=${SOURCE}" >> ${NEW_OS_DIR}/.bashrc
- echo "export TOOLS=${TOOLS}" >> ${NEW_OS_DIR}/.bashrc
- echo "export PACKAGE=${PACKAGE}" >> ${NEW_OS_DIR}/.bashrc
- echo "export MARK=${MARK}" >> ${NEW_OS_DIR}/.bashrc
- echo "export ROOTFS=${ROOTFS}" >> ${NEW_OS_DIR}/.bashrc
- echo "export FAKEROOT=${FAKEROOT}" >> ${NEW_OS_DIR}/.bashrc
- echo "unset CFLAGS" >> ${NEW_OS_DIR}/.bashrc
- echo "unset CXXFLAGS" >> ${NEW_OS_DIR}/.bashrc
- chown -R ${NEW_OS_ID}.${NEW_OS_ID} ${NEW_OS_DIR}
复制代码 - 建立目标系统目录结构
- mkdir -pv ${ROOTFS}/{bin,boot,dev,etc/{ramdisk,opt},home,initrd,lib,media,mnt,opt,proc,root,sbin,srv,sys,tmp,usr,var}
- mkdir -pv ${ROOTFS}/usr{,/local}/{bin,include,lib,sbin,share,src}
- mkdir -pv ${ROOTFS}/usr{,/local}/share/{doc,info,locale,man,misc,terminfo,zoneinfo}
- ln -sfv share/{doc,info,man} ${ROOTFS}/usr
- ln -sfv share/{doc,info,man} ${ROOTFS}/usr/local
- mkdir -pv ${ROOTFS}/usr{,/local}/share/man/man{1,2,3,4,5,6,7,8}
- mkdir -pv ${ROOTFS}/var/{cache,lib/{misc,locate},local,lock,log,mail,opt,run,spool,tmp}
- chmod 0750 ${ROOTFS}/root
- chmod 1777 ${ROOTFS}/{,var/}tmp
复制代码 - 宿主安装gmp-4.2.2
- ./configure --prefix=/usr \
- --enable-cxx \
- --enable-mpbsd
- make
- make install
复制代码 - 宿主安装mpfr-2.3.1
- ./configure --prefix=/usr \
- --enable-shared
- make
- make install
复制代码
一、${NEW_OS_USER} 用户建立交叉工具链
- linux-header-2.6.25.7
- HOMEPAGE="http://www.kernel.org/"
- SOURCE_URL="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.7.tar.bz2
- http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.7.tar.bz2.sign"
- SOURCE_MD5=""
- PACKAGE_NAME=linux-header
- PACKAGE_VERSION=2.6.25.7
- SOURCE_DIR=${SOURCE}/linux-${PACKAGE_VERSION}
- BUILD_DIR=
- source_tree()
- {
- cd ${SOURCE}
- tar -xvf linux-${PACKAGE_VERSION}.tar.bz2
- cd ${SOURCE_DIR}
- make mrproper
- }
- source_config()
- {
- echo "source_config"
- }
- source_build()
- {
- cd ${SOURCE_DIR}
- make ARCH=${NEW_OS_ARCH} INSTALL_HDR_PATH=header_dir headers_install
- mkdir -pv ${ROOTFS}/usr
- cp -av header_dir/include ${ROOTFS}/usr/
- }
复制代码 - glibc-header-2.7
- HOMEPAGE="http://www.gnu.org/software/libc/"
- SOURCE_URL="http://ftp.gnu.org/gnu/glibc/glibc-2.7.tar.bz2
- http://ftp.gnu.org/gnu/glibc/glibc-2.7.tar.bz2.sig
- http://ftp.gnu.org/gnu/glibc/glibc-ports-2.7.tar.bz2
- http://ftp.gnu.org/gnu/glibc/glibc-ports-2.7.tar.bz2.sig"
- SOURCE_MD5=""
- SOURCE_DIR=${SOURCE}/glibc-${PACKAGE_VERSION}
- BUILD_DIR=${SOURCE}/glibc-build
- source_tree()
- {
- cd ${SOURCE}
- tar -xvf glibc-${PACKAGE_VERSION}.tar.bz2
- tar -xvf glibc-ports-${PACKAGE_VERSION}.tar.bz2
- mv -v glibc-ports-${PACKAGE_VERSION} ${SOURCE_DIR}/ports
- cd ${SOURCE_DIR}
- sed -i -e "s@/etc/mtab@/etc/ramdisk/mtab@" sysdeps/unix/sysv/linux/paths.h
- mkdir -pv ${BUILD_DIR}
- }
- source_config()
- {
- cd ${BUILD_DIR}
- echo "libc_cv_forced_unwind=yes" >> config.cache
- echo "libc_cv_c_cleanup=yes" >> config.cache
- echo "libc_cv_${NEW_OS_ARCH}_tls=yes" >> config.cache
- if [ "${NEW_OS_ARCH}" = "i386" ]; then
- echo "libc_cv_386_tls=yes" >> config.cache
- echo "CFLAGS+=-march=${NEW_OS_MARCH}" >> configparms
- fi
- echo "install_root=${ROOTFS}" >> configparms
- echo "slibdir=/lib" >> configparms
- CC=gcc ${SOURCE_DIR}/configure --prefix=/usr \
- --host=${NEW_OS_TARGET} \
- --build=${NEW_OS_HOST} \
- --with-headers=${ROOTFS}/usr/include \
- --cache-file=config.cache
- }
- source_build()
- {
- cd ${BUILD_DIR}
- make install-headers
- mkdir -pv ${ROOTFS}/usr/include/bits
- cp -v bits/stdio_lim.h ${ROOTFS}/usr/include/bits/
- mkdir -pv ${ROOTFS}/usr/include/gnu
- touch ${ROOTFS}/usr/include/gnu/stubs{,-32,-64}.h
- }
复制代码 - binutils-2.18
- HOMEPAGE="http://www.gnu.org/software/binutils/"
- SOURCE_URL="http://ftp.gnu.org/gnu/binutils/binutils-2.18.tar.bz2
- http://ftp.gnu.org/gnu/binutils/binutils-2.18.tar.bz2.sig"
- SOURCE_MD5=""
- SOURCE_DIR=${SOURCE}/${PACKAGE_NAME}-${PACKAGE_VERSION}
- BUILD_DIR=${SOURCE}/${PACKAGE_NAME}-build
- source_tree()
- {
- cd ${SOURCE}
- tar -xvf ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.bz2
- cd ${SOURCE_DIR}
- #posix
- sed -i -e "s@tail +16c@tail -c +16@g" $(grep -lr "tail +16c" *)
- sed -i -e "s@tail +140@tail -n +140@g" $(grep -lr "tail +140" *)
- sed -i -e "s@head -1@head -n 1@g" $(grep -lr "head -1" *)
- #support texinfo 4.11
- sed -i -e "s@4\\\.\[4-9\]@&|4\\\.11@" configure
- #--disable-multilib /lib64->/lib
- if [ "${NEW_OS_NO_LIB64_DIR}" = "yes" ]; then
- sed -i -e "s@/lib64/ld@/lib/ld@g" ld/configure.host
- fi
- mkdir -pv ${BUILD_DIR}
- }
- source_config()
- {
- cd ${BUILD_DIR}
- if [ "${NEW_OS_ARCH}" = "x86_64" ]; then
- CONFPARMS=--enable-64-bit-bfd
- else
- CONFPARMS=
- fi
- AR=ar AS=as ${SOURCE_DIR}/configure --prefix=${TOOLS} \
- [color=Red]--build=${NEW_OS_HOST} \[/color]
- --host=${NEW_OS_HOST} \
- --target=${NEW_OS_TARGET} \
- --with-sysroot=${ROOTFS} \
- --disable-nls \
- --enable-shared \
- --disable-multilib ${CONFPARMS}
- }
- source_build()
- {
- cd ${BUILD_DIR}
- make configure-host
- make
- make install
- mkdir -pv ${ROOTFS}/usr/include
- cp -v ${SOURCE_DIR}/include/libiberty.h ${ROOTFS}/usr/include/
- }
复制代码 - gcc-static-4.3.1
- HOMEPAGE="http://gcc.gnu.org/"
- SOURCE_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2
- http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2.sig"
- SOURCE_MD5=""
- SOURCE_DIR=${SOURCE}/gcc-${PACKAGE_VERSION}
- BUILD_DIR=${SOURCE}/gcc-build
- source_tree()
- {
- cd ${SOURCE}
- tar -xvf gcc-${PACKAGE_VERSION}.tar.bz2
- cd ${SOURCE_DIR}
- #posix
- sed -i -e "s@tail -1@tail -n 1@g" $(grep -lr "tail -1" *)
- sed -i -e "s@tail -3@tail -n 3@g" $(grep -lr "tail -3" *)
- sed -i -e "s@head -1@head -n 1@g" $(grep -lr "head -1" *)
- #--disable-multilib /lib64->/lib
- if [ "${NEW_OS_NO_LIB64_DIR}" = "yes" ]; then
- sed -i -e "s@/lib64/ld@/lib/ld@g" gcc/config/*/linux64.h
- sed -i -e "s@../lib32 ../lib ../lib64@../lib32 ../lib ../lib@g" \
- -e "s@../lib64 ../lib@../lib ../lib@g" \
- -e "s@../lib64@../lib@g" gcc/config/*/t-linux64
- fi
- #cross hacking
- sed -i -e "s@/usr/libexec/gcc/@@g" -e "s@/usr/lib/gcc/@@g" gcc/gcc.c
- mkdir -pv ${BUILD_DIR}
- }
- source_config()
- {
- cd ${BUILD_DIR}
- [color=Red]AR=ar \[/color]
- ${SOURCE_DIR}/configure --prefix=${TOOLS} \
- [color=Red]--build=${NEW_OS_HOST} \[/color]
- --host=${NEW_OS_HOST} \
- --target=${NEW_OS_TARGET} \
- --with-sysroot=${ROOTFS} \
- --disable-nls \
- --disable-shared \
- --enable-languages=c \
- --disable-multilib
- }
- source_build()
- {
- cd ${BUILD_DIR}
- make all-gcc
- [color=Red]make all-target-libgcc[/color]
- make install-gcc[color=Red]
- make install-target-libgcc[/color]
- }
复制代码- [color=Silver] HOMEPAGE="http://gcc.gnu.org/"
- SOURCE_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2
- http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2.sig"
- SOURCE_MD5=""
- SOURCE_DIR=${SOURCE}/gcc-${PACKAGE_VERSION}
- BUILD_DIR=${SOURCE}/gcc-build
- source_tree()
- {
- cd ${SOURCE}
- tar -xvf gcc-${PACKAGE_VERSION}.tar.bz2
- cd ${SOURCE_DIR}
- #posix
- sed -i -e "s@tail -1@tail -n 1@g" $(grep -lr "tail -1" *)
- sed -i -e "s@tail -3@tail -n 3@g" $(grep -lr "tail -3" *)
- sed -i -e "s@head -1@head -n 1@g" $(grep -lr "head -1" *)
- #--disable-multilib /lib64->/lib
- if [ "${NEW_OS_NO_LIB64_DIR}" = "yes" ]; then
- sed -i -e "s@/lib64/ld@/lib/ld@g" gcc/config/*/linux64.h
- sed -i -e "s@../lib32 ../lib ../lib64@../lib32 ../lib ../lib@g" \
- -e "s@../lib64 ../lib@../lib ../lib@g" \
- -e "s@../lib64@../lib@g" gcc/config/*/t-linux64
- fi
- #cross hacking
- sed -i -e "s@/usr/libexec/gcc/@@g" -e "s@/usr/lib/gcc/@@g" gcc/gcc.c
- #cross hacking
- sed -i 's@$(GCC_FOR_TARGET) -dumpspecs@echo -n@' gcc/Makefile.in
- mkdir -pv ${BUILD_DIR}
- }
- source_config()
- {
- cd ${BUILD_DIR}
- AR=ar \
- CC_FOR_TARGET=${NEW_OS_TARGET}-gcc \
- ${SOURCE_DIR}/configure --prefix=${TOOLS} \
- --build=${NEW_OS_HOST} \
- --host=${NEW_OS_HOST} \
- --target=${NEW_OS_TARGET} \
- --with-sysroot=${ROOTFS} \
- --disable-nls \
- --disable-shared \
- --enable-languages=c \
- --disable-multilib
- }
- source_build()
- {
- cd ${BUILD_DIR}
- make all-gcc
- make install-gcc
- make all-target-libgcc
- make install-target-libgcc
- }[/color]
复制代码 注意:
这里用补丁建立空spec文件,否则交叉编译会出错,伪交叉编译会引人宿主gcc spec。(2008.07.16已废弃)
- glibc-2.7
- gcc-4.3.1
- HOMEPAGE="http://gcc.gnu.org/"
- SOURCE_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2
- http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2.sig"
- SOURCE_MD5=""
- SOURCE_DIR=${SOURCE}/${PACKAGE_NAME}-${PACKAGE_VERSION}
- BUILD_DIR=${SOURCE}/${PACKAGE_NAME}-build
- source_tree()
- {
- cd ${SOURCE}
- tar -xvf ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.bz2
- cd ${SOURCE_DIR}
- #posix
- sed -i -e "s@tail -1@tail -n 1@g" $(grep -lr "tail -1" *)
- sed -i -e "s@tail -3@tail -n 3@g" $(grep -lr "tail -3" *)
- sed -i -e "s@head -1@head -n 1@g" $(grep -lr "head -1" *)
- #--disable-multilib /lib64->/lib
- if [ "${NEW_OS_NO_LIB64_DIR}" = "yes" ]; then
- sed -i -e "s@/lib64/ld@/lib/ld@g" gcc/config/*/linux64.h
- sed -i -e "s@../lib32 ../lib ../lib64@../lib32 ../lib ../lib@g" \
- -e "s@../lib64 ../lib@../lib ../lib@g" \
- -e "s@../lib64@../lib@g" gcc/config/*/t-linux64
- fi
- #cross hacking
- sed -i -e "s@/usr/libexec/gcc/@@g" -e "s@/usr/lib/gcc/@@g" gcc/gcc.c
- mkdir -pv ${BUILD_DIR}
- }
- source_config()
- {
- cd ${BUILD_DIR}
- [color=Red]AR=ar \[/color]
- ${SOURCE_DIR}/configure --prefix=${TOOLS} \
- [color=Red]--build=${NEW_OS_HOST} \[/color]
- --host=${NEW_OS_HOST} \
- --target=${NEW_OS_TARGET} \
- --with-sysroot=${ROOTFS} \
- --disable-nls \
- --enable-shared \
- --enable-languages=c,c++ \
- --enable-__cxa_atexit \
- --enable-c99 \
- --enable-long-long \
- --enable-threads=posix \
- --disable-multilib
- }
- source_build()
- {
- cd ${BUILD_DIR}
- [color=Red]make
- make install[/color]
- }
复制代码
注意:
建立工具链时,这里特别添加了--build=${NEW_OS_HOST},这是gcc-4.3系列与之前版本的区别,之前版本gcc配置时探测到 --host --target 不同,会自动设置--build与--host相同,但gcc-4.3会根据系统信息配置。
所以伪交叉编译时会出问题,具体见 用GCC 4.3-20040810构造SYSROOT工具链 ,特别说明,这个不是bug,添加--build后可以正常编译不需额外补丁。
为统一,建立交叉工具链时均加上--build=${NEW_OS_HOST}。- [color=Silver] HOMEPAGE="http://gcc.gnu.org/"
- SOURCE_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2
- http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2.sig"
- SOURCE_MD5=""
- SOURCE_DIR=${SOURCE}/${PACKAGE_NAME}-${PACKAGE_VERSION}
- BUILD_DIR=${SOURCE}/${PACKAGE_NAME}-build
- source_tree()
- {
- cd ${SOURCE}
- tar -xvf ${PACKAGE_NAME}-${PACKAGE_VERSION}.tar.bz2
- cd ${SOURCE_DIR}
- #posix
- sed -i -e "s@tail -1@tail -n 1@g" $(grep -lr "tail -1" *)
- sed -i -e "s@tail -3@tail -n 3@g" $(grep -lr "tail -3" *)
- sed -i -e "s@head -1@head -n 1@g" $(grep -lr "head -1" *)
- #--disable-multilib /lib64->/lib
- if [ "${NEW_OS_NO_LIB64_DIR}" = "yes" ]; then
- sed -i -e "s@/lib64/ld@/lib/ld@g" gcc/config/*/linux64.h
- sed -i -e "s@../lib32 ../lib ../lib64@../lib32 ../lib ../lib@g" \
- -e "s@../lib64 ../lib@../lib ../lib@g" \
- -e "s@../lib64@../lib@g" gcc/config/*/t-linux64
- fi
- #cross hacking
- sed -i -e "s@/usr/libexec/gcc/@@g" -e "s@/usr/lib/gcc/@@g" gcc/gcc.c
- mkdir -pv ${BUILD_DIR}
- }
- source_config()
- {
- cd ${BUILD_DIR}
- AR=ar \
- CC_FOR_TARGET=${NEW_OS_TARGET}-gcc \
- CXX_FOR_TARGET=${NEW_OS_TARGET}-g++ \
- ${SOURCE_DIR}/configure --prefix=${TOOLS} \
- --build=${NEW_OS_HOST} \
- --host=${NEW_OS_HOST} \
- --target=${NEW_OS_TARGET} \
- --with-sysroot=${ROOTFS} \
- --disable-nls \
- --enable-shared \
- --enable-languages=c,c++ \
- --enable-__cxa_atexit \
- --enable-c99 \
- --enable-long-long \
- --enable-threads=posix \
- --disable-multilib
- }
- source_build()
- {
- cd ${BUILD_DIR}
- make
- make install
- }
- [/color]
复制代码 (2008.07.16已废弃)
二、${NEW_OS_USER} 用户交叉编译临时系统
注意:
为统一,与建立交叉工具链类似,1-4编译时特别添加 --target=${NEW_OS_TARGET}。
交叉编译mpfr-2.3.1时,需要使用--with-gmp-build指明gmp交叉编译目录,否则有恼人的错误引用问题,伪交叉编译时则会连接到宿主libgmp.so。
- binutils-2.18
- gmp-4.2.2
- mpfr-2.3.1
- gcc-4.3.1
- ncurses-5.6
- bash-3.2
- bzip2-1.0.4
- coreutils-6.9
- diffutils-2.8.7
- findutils-4.2.33
- zlib-1.2.3
- file-4.25
- gawk-3.1.6
- gettext-0.17
- grep-2.5.3
- gzip-1.3.12
- make-3.81
- patch-2.5.9
- sed-4.1.5
- tar-1.20
- texinfo-4.11
- e2fsprogs-1.40.2
- sysvinit-2.86
- module-init-tools-3.2.2
- util-linux-ng-2.13.1
- udev-118
- shadow-4.1.1
- linux-2.6.25.7
三、root 用户处理交叉编译临时系统
- 现在更改临时系统用户、用户组为root
- 创建启动必须的设备文件
- 安装到新分区或按需定制
- 安装一个bootloader(可选)
四、boot/chroot进入交叉编译临时系统,安装本地编译临时perl,测试工具
- perl-5.10.0(这里使用正式安装perl时相同编译配置,方便维护)
- m4-1.4.10(这里使用正式安装m4时相同编译配置,方便维护,gmp本地编译时需要)
- 测试工具(可选)
五、boot/chroot进入交叉编译临时系统,建立本地编译基本系统
- base-filesystem-0
- linux-header-2.6.25.7
- glibc-2.7
- binutils-2.18
- gmp-4.2.2
- mpfr-2.3.1
- gcc-4.3.1
- man-pages-3.00
- sed-4.1.5
- e2fsprogs-1.40.2
- coreutils-6.9
- iana-etc-2.20
- m4-1.4.10
- bison-2.3
- ncurses-5.6
- procps-3.2.7
- libtool-1.5.26
- flex-2.5.35
- iproute2-2.6.23
- perl-5.10.0
- readline-5.2
- zlib-1.2.3
- autoconf-2.61
- automake-1.10.1
- bash-3.2
- bzip2-1.0.4
- diffutils-2.8.7
- file-4.25
- findutils-4.2.33
- gawk-3.1.6
- gettext-0.17
- grep-2.5.3
- groff-1.19.2
- gzip-1.3.12
- inetutils-1.5
- kbd-1.12
- less-418
- make-3.81
- man-1.6f
- mktemp-1.5
- module-init-tools-3.2.2
- patch-2.5.9
- psmisc-22.6
- Linux-PAM-0.99.10.0
- shadow-4.1.1
- sysklogd-1.5
- sysvinit-2.86
- tar-1.20
- texinfo-4.11
- udev-118
- util-linux-ng-2.13.1
- vim-7.1
- linux-2.6.25.7
- iptables-1.4.0
- gpm-1.20.5
- net-tools-1.60
- dhcp-4.0.0
- libgpg-error-1.6
- libgcrypt-1.4.0
- gnutls-2.3.1
- openssl-0.9.8g
- wget-1.11
- lynx2-8-6
- openssh-4.7p1
- pkg-config-0.23
本文使用的简化编译脚本已附,命名以自解释为原则。
回头看看,自己改的东西太多,一点一点贴上来太麻烦。
使用帮助,请执行./new_os.sh。
不显式挂载分区,重写的简化启动脚本,完全自定制(也就是说不一定适合每个人),请有选择的参考。
另,请不要与官方alfs比较,用途不同。
与gcc-4.3.1不兼容软件包列表:
tar-1.19,升级到tar-1.20解决。
scim-pinyin-0.5.91,添加#include <string.h>解决。
scim-fcitx-3.1.1,添加#include <string.h>解决。
kvm-68,升级到kvm-70解决,使用kernel自带模块代码,不再需要gcc-3.3支持。
qemu-0.9.1,暂未解决,可能是内核头文件引起的,gcc-3.3.6也不行
alsa-tools-1.0.16,升级到alsa-*-1.0.17rc2解决。
下面部分源自xorg-7.3,不影响自己使用,暂不深究。
xf86-input-acecad-1.2.0
xf86-input-calcomp-1.1.0
xf86-input-citron-2.2.0
xf86-input-dmc-1.1.0
xf86-input-dynapro-1.1.0
xf86-input-elo2300-1.1.0
xf86-input-evdev-1.1.2
xf86-input-magellan-1.1.0
xf86-input-microtouch-1.1.0
xf86-input-penmount-1.2.0
xf86-input-spaceorb-1.1.0
xf86-input-vmmouse-12.4.1
xf86-input-void-1.1.0
xf86-video-glide-1.0.0
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|