clfs-sysroot 20070915 自动编译脚本
时间:2007-10-14
来源:互联网
敲命令很麻烦,干脆把命令都弄到一个Makefile里面了。
需要的可以按自己的要求修改。
如果发现错误的话,请指出。
本脚本只编译交叉编译环境。
另附gcc arm大尾模式patch
需要的可以按自己的要求修改。
如果发现错误的话,请指出。
本脚本只编译交叉编译环境。
代码:
CLFS = ${HOME}/armv5-root
PATH = ${CLFS}/cross-tools/bin:/bin:/usr/bin
CLFS_HOST = i486-cross-linux-gnu
CLFS_TARGET = armv5-linux
CLFS_SOURCE = ${HOME}/source
CLFS_BUILD = ${HOME}/build/${CLFS_TARGET}
CFLAGS =
CXXFLAGS =
#GCC_EXTRA_CONFIG = --with-cpu=xscale --enable-cxx-flags=-mcpu=xscale
GCC_EXTRA_CONFIG = --with-arch=armv5 --enable-cxx-flags=-march=armv5
all:
exit 1
clean:
rm -rf ${CLFS_BUILD}/*
distclean: clean
rm -rf ${CLFS}/*
crosstools: dirs linux_headers binutils_cross glibc_headers gcc_static glibc_cross gcc_cross_final file_cross groff_cross shadow_cross
dirs:
install -dv ${CLFS}
install -dv ${CLFS_BUILD}
mkdir -pv ${CLFS}/{bin,boot,dev,{etc/,}opt,home,lib,mnt}
mkdir -pv ${CLFS}/{proc,media/{floppy,cdrom},sbin,srv,sys}
mkdir -pv ${CLFS}/var/{lock,log,mail,run,spool}
mkdir -pv ${CLFS}/var/{opt,cache,lib/{misc,locate},local}
install -dv -m 0750 ${CLFS}/root
install -dv -m 1777 ${CLFS}{/var,}/tmp
mkdir -pv ${CLFS}/usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv ${CLFS}/usr/{,local/}share/{doc,info,locale,man}
mkdir -pv ${CLFS}/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv ${CLFS}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}
for dir in ${CLFS}/usr{,/local}; do ln -sfnv share/{man,doc,info} $${dir}; done
echo root::0:0:root:/root:/bin/bash > ${CLFS}/etc/passwd
echo root:x:0: > ${CLFS}/etc/group
echo root:x:0: >> ${CLFS}/etc/group
echo bin:x:1: >> ${CLFS}/etc/group
echo sys:x:2: >> ${CLFS}/etc/group
echo kmem:x:3: >> ${CLFS}/etc/group
echo tty:x:4: >> ${CLFS}/etc/group
echo tape:x:5: >> ${CLFS}/etc/group
echo daemon:x:6: >> ${CLFS}/etc/group
echo floppy:x:7: >> ${CLFS}/etc/group
echo disk:x:8: >> ${CLFS}/etc/group
echo lp:x:9: >> ${CLFS}/etc/group
echo dialout:x:10: >> ${CLFS}/etc/group
echo audio:x:11: >> ${CLFS}/etc/group
echo video:x:12: >> ${CLFS}/etc/group
echo utmp:x:13: >> ${CLFS}/etc/group
echo usb:x:14: >> ${CLFS}/etc/group
echo cdrom:x:15: >> ${CLFS}/etc/group
linux_headers:
tar -xvjf ${CLFS_SOURCE}/linux-headers-2.6.22.6-09032007.tar.bz2 -C ${CLFS_BUILD}
install -dv ${CLFS}/usr/include
cp -av ${CLFS_BUILD}/linux-headers-2.6.22.6/include/{asm-generic,linux,mtd,scsi,sound} ${CLFS}/usr/include
cp -av ${CLFS_BUILD}/linux-headers-2.6.22.6/include/asm-arm ${CLFS}/usr/include/asm
binutils_cross:
tar -xvjf ${CLFS_SOURCE}/binutils-2.18.tar.bz2 -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/binutils-2.18 && \
patch -Np1 -i ${CLFS_SOURCE}/binutils-2.18-posix-1.patch && \
mkdir -v ${CLFS_BUILD}/binutils-build
cd ${CLFS_BUILD}/binutils-build && \
AR=ar AS=as ../binutils-2.18/configure --prefix=${CLFS}/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} --with-sysroot=${CLFS} --disable-nls --enable-shared --disable-multilib && \
make -C ${CLFS_BUILD}/binutils-build configure-host
make -C ${CLFS_BUILD}/binutils-build
make -C ${CLFS_BUILD}/binutils-build install
cp -v ${CLFS_BUILD}/binutils-2.18/include/libiberty.h ${CLFS}/usr/include
glibc_headers:
tar -xvjf ${CLFS_SOURCE}/glibc-2.6.1.tar.bz2 -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/glibc-2.6.1 && \
cp configure{,.orig} && \
sed -e 's/3.4/3.[0-9]/g' configure.orig > configure && \
tar -xvjf ${CLFS_SOURCE}/glibc-ports-2.6.1.tar.bz2 && mv -v glibc-ports-2.6.1 ports
mkdir -v ${CLFS_BUILD}/glibc-build
cd ${CLFS_BUILD}/glibc-build && \
echo "libc_cv_forced_unwind=yes" > config.cache && \
echo "libc_cv_c_cleanup=yes" >> config.cache && \
echo "libc_cv_arm_tls=yes" >> config.cache && \
echo "install_root=${CLFS}" > configparms && \
CC=gcc ../glibc-2.6.1/configure --prefix=/usr --host=${CLFS_TARGET} --build=${CLFS_HOST} --with-headers=${CLFS}/usr/include --cache-file=config.cache
make -C ${CLFS_BUILD}/glibc-build install-headers
cp -v ${CLFS_BUILD}/glibc-build/bits/stdio_lim.h ${CLFS}/usr/include/bits
touch ${CLFS}/usr/include/gnu/stubs.h
cp -v ${CLFS_BUILD}/glibc-build/../glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h ${CLFS}/usr/include/bits
rm -rf ${CLFS_BUILD}/glibc-2.6.1
rm -rf ${CLFS_BUILD}/glibc-build
gcc_static:
tar -xvjf ${CLFS_SOURCE}/gcc-4.2.1.tar.bz2 -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/gcc-4.2.1 && \
patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-posix-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-cross_search_paths-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-arm-bigendian.patch
mkdir -v ${CLFS_BUILD}/gcc-build
cd ${CLFS_BUILD}/gcc-build && \
../gcc-4.2.1/configure --prefix=${CLFS}/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} ${GCC_EXTRA_CONFIG} --disable-multilib --with-sysroot=${CLFS} --disable-nls --disable-shared --enable-languages=c
make -C ${CLFS_BUILD}/gcc-build all-gcc
make -C ${CLFS_BUILD}/gcc-build install-gcc
rm -rf ${CLFS_BUILD}/gcc-4.2.1
rm -rf ${CLFS_BUILD}/gcc-build
glibc_cross:
tar -xvjf ${CLFS_SOURCE}/glibc-2.6.1.tar.bz2 -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/glibc-2.6.1 && \
tar -xvjf ${CLFS_SOURCE}/glibc-ports-2.6.1.tar.bz2 && mv -v glibc-ports-2.6.1 ports && \
patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-libgcc_eh-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-localedef_segfault-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-cross_hacks-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
mkdir -v ${CLFS_BUILD}/glibc-build
cd ${CLFS_BUILD}/glibc-build && \
echo "libc_cv_forced_unwind=yes" > config.cache && \
echo "libc_cv_c_cleanup=yes" >> config.cache && \
echo "install_root=${CLFS}" > configparms && \
BUILD_CC="gcc" CC="${CLFS_TARGET}-gcc" AR="${CLFS_TARGET}-ar" RANLIB="${CLFS_TARGET}-ranlib" ../glibc-2.6.1/configure --prefix=/usr --libexecdir=/usr/lib/glibc --host=${CLFS_TARGET} --build=${CLFS_HOST} --disable-profile --enable-add-ons --with-tls --enable-kernel=2.6.0 --with-__thread --with-binutils=${CLFS}/cross-tools/bin --with-headers=${CLFS}/usr/include --cache-file=config.cache
make -C ${CLFS_BUILD}/glibc-build
make -C ${CLFS_BUILD}/glibc-build install
#make -C ${CLFS_BUILD}/glibc-build localedata/install-locales
echo "# Begin /etc/nsswitch.conf" > ${CLFS}/etc/nsswitch.conf
echo "" >> ${CLFS}/etc/nsswitch.conf
echo "passwd: files" >> ${CLFS}/etc/nsswitch.conf
echo "group: files" >> ${CLFS}/etc/nsswitch.conf
echo "shadow: files" >> ${CLFS}/etc/nsswitch.conf
echo "" >> ${CLFS}/etc/nsswitch.conf
echo "hosts: files dns" >> ${CLFS}/etc/nsswitch.conf
echo "networks: files" >> ${CLFS}/etc/nsswitch.conf
echo "" >> ${CLFS}/etc/nsswitch.conf
echo "protocols: files" >> ${CLFS}/etc/nsswitch.conf
echo "services: files" >> ${CLFS}/etc/nsswitch.conf
echo "ethers: files" >> ${CLFS}/etc/nsswitch.conf
echo "rpc: files" >> ${CLFS}/etc/nsswitch.conf
echo "" >> ${CLFS}/etc/nsswitch.conf
echo "# End /etc/nsswitch.conf" >> ${CLFS}/etc/nsswitch.conf
echo "# Begin /etc/ld.so.conf" > ${CLFS}/etc/ld.so.conf
echo "" >> ${CLFS}/etc/ld.so.conf
echo "/usr/local/lib" >> ${CLFS}/etc/ld.so.conf
echo "/opt/lib" >> ${CLFS}/etc/ld.so.conf
echo "" >> ${CLFS}/etc/ld.so.conf
echo "# End /etc/ld.so.conf" >> ${CLFS}/etc/ld.so.conf
gcc_cross_final:
tar -xvjf ${CLFS_SOURCE}/gcc-4.2.1.tar.bz2 -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/gcc-4.2.1 && \
patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-posix-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-cross_search_paths-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-arm-bigendian.patch
mkdir -v ${CLFS_BUILD}/gcc-build
cd ${CLFS_BUILD}/gcc-build && \
../gcc-4.2.1/configure --prefix=${CLFS}/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} ${GCC_EXTRA_CONFIG} --disable-multilib --with-sysroot=${CLFS} --disable-nls --enable-shared --enable-languages=c,c++ --enable-__cxa_atexit --enable-c99 --enable-long-long --enable-threads=posix
make -C ${CLFS_BUILD}/gcc-build
make -C ${CLFS_BUILD}/gcc-build install
file_cross:
tar -xvzf ${CLFS_SOURCE}/file-4.21.tar.gz -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/file-4.21 && \
./configure --prefix=${CLFS}/cross-tools && \
make && make install
groff_cross:
tar -xvzf ${CLFS_SOURCE}/groff-1.19.2.tar.gz -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/groff-1.19.2 && \
PAGE=A4 ./configure --prefix=${CLFS}/cross-tools --without-x
make -C ${CLFS_BUILD}/groff-1.19.2
make -C ${CLFS_BUILD}/groff-1.19.2 install
shadow_cross:
tar -xvjf ${CLFS_SOURCE}/shadow-4.0.18.1.tar.bz2 -C ${CLFS_BUILD}
cd ${CLFS_BUILD}/shadow-4.0.18.1 && \
patch -Np1 -i ${CLFS_SOURCE}/shadow-4.0.18.1-useradd_fix-1.patch && \
patch -Np1 -i ${CLFS_SOURCE}/shadow-4.0.18.1-sysroot_hacks-1.patch && \
echo "shadow_cv_passwd_dir=${CLFS}/bin" > config.cache && \
./configure --prefix=${CLFS}/cross-tools --sbindir=${CLFS}/cross-tools/bin --sysconfdir=${CLFS}/etc --disable-shared --without-libpam --without-audit --without-selinux --program-prefix=${CLFS_TARGET}- --cache-file=config.cache && \
cp config.h{,.orig} && \
sed "/PASSWD_PROGRAM/s/passwd/${CLFS_TARGET}-&/" config.h.orig > config.h
make -C ${CLFS_BUILD}/shadow-4.0.18.1
make -C ${CLFS_BUILD}/shadow-4.0.18.1 install
上传的附件
| Makefile.clfs.sysroot.gz (2.1 KB, 21 次查看) | |
| gcc-4.2.1-arm-bigendian.patch.gz (1.3 KB, 13 次查看) |
作者: 高热 发布时间: 2007-10-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28















