手工制作最新版armlinux交叉工具链.docx
- 文档编号:30663028
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:7
- 大小:16.90KB
手工制作最新版armlinux交叉工具链.docx
《手工制作最新版armlinux交叉工具链.docx》由会员分享,可在线阅读,更多相关《手工制作最新版armlinux交叉工具链.docx(7页珍藏版)》请在冰豆网上搜索。
手工制作最新版armlinux交叉工具链
手工制作最新版arm-linux交叉工具链
注意:
本文是在ubuntu10.04desktopi386操作系统上完成的,
1、准备目录和环境变量
#echo“1.PrepareDirectoriesandEnvironmentVariables”|tee~/make_cross.txt
# mkdir-p/usr/local/arm/{tars,source,4.2.1}
#grepHISTSIZE~/.bashrc||echo“exportHISTSIZE=5000″>>~/.bashrc
#.~/.bashrc
#apt-get-yinstallpatchtexinfom4flexbison
#apt-get-ybuild-depglib2.0
#apt-get-ybuild-depgcc-4.3
#grep‘TARGET_PREFIX’~/.bashrc||cat>>~/.bashrc<
exportTOP=/usr/local/arm
exportTAR=${TOP}/tars
exportCLFS=${TOP}/clfs
exportSYSROOT=${TOP}/4.2.1
exportTARGET_PREFIX=${TOP}/4.2.1
exportLINUX_VERSION=2.6.22.6
exportBINUTILS_VERSION=2.18
exportGLIBC_VERSION=2.6.1
exportGCC_VERSION=4.2.1
exportGDB_VERSION=7.0
exportCLFS_TARGET=”arm-linux”
exportPATH=${TARGET_PREFIX}/bin:
$PATH
unsetCFLAGS
unsetCXXFLAGS
EOF
#. ~/.bashrc
2、准备源码包
#echo“2.PrepareSourcePackages”|tee-a~/make_cross.txt
#whichwget||apt-get-yinstallwget
#cd/usr/local/arm/tars
#[-fbinutils-2.18.tar.bz2]||wgetftp:
//ftp.gnu.org/gnu/binutils/binutils-2.18.tar.bz2
#[-fbinutils-2.18-posix-1.patch]||wget
#[-fgcc-4.2.1.tar.bz2]||wgetftp:
//ftp.gnu.org/gnu/gcc/gcc-4.2.1/gcc-4.2.1.tar.bz2
#[-fgcc-4.2.1-cross_search_paths-1.patch]||wget
#[-fgcc-4.2.1-posix-1.patch]||wget
#[-fglibc-2.6.1.tar.bz2]||wgetftp:
//ftp.gnu.org/gnu/glibc/glibc-2.6.1.tar.bz2
#[-fglibc-ports-2.6.1.tar.bz2]||wgetftp:
//ftp.gnu.org/gnu/glibc/glibc-ports-2.6.1.tar.bz2
#[-fglibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch]||wget
#[-fglibc-2.6.1-cross_hacks-1.patch]||wget
#[-fglibc-2.6.1-hppa_nptl-1.patch]||wget
#[-fglibc-2.6.1-libgcc_eh-1.patch]||wget
#[-fglibc-2.6.1-localedef_segfault-1.patch]||wget
#[-fglibc-2.6.1-sysdep_cancel-1.patch]||wget
#[-flinux-2.6.22.tar.bz2]||wgetftp:
//ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2
#[-fgdb-7.0a.tar.bz2]||wgetftp:
//ftp.gnu.org/gnu/gdb/gdb-7.0a.tar.bz2
3、安装Linux内核头文件
#echo“3.InstallLinuxKernelHeaders”|tee-a~/make_cross.txt
#install-dv${SYSROOT}/usr/include
#install-dv${TOP}/source
#cd${TOP}/source
#tar-xjf ${TAR}/linux-${LINUX_VERSION}.tar.bz2
#cdlinux-${LINUX_VERSION}
#makemainstone_defconfigARCH=arm
#makeinclude/linux/version.h
#cp-ainclude/{asm-generic,linux,mtd,scsi,sound} ${SYSROOT}/usr/include
#cp-ainclude/asm-arm ${SYSROOT}/usr/include/asm
4、编译安装binutils
#echo“4.CompileBinutils”|tee-a~/make_cross.txt
#mkdir-p${TARGET_PREFIX}
#cd${TOP}/source
#tar-jxf${TAR}/binutils-${BINUTILS_VERSION}.tar.bz2
#cdbinutils-${BINUTILS_VERSION}
#patch-Np1-i${TAR}/binutils-${BINUTILS_VERSION}-posix-1.patch
#mkdir-p${TOP}/source/BUILD/binutils-${BINUTILS_VERSION}
#cd${TOP}/source/BUILD/binutils-${BINUTILS_VERSION}
#exportAR=ar
#exportAS=as
#sed-i‘s%\[0-9\]|4\\.\[4-9\]|\[5-9\]%\[0-9\]|4\\.\[4-9\]|4\\.\[1-9\]\[0-9\]*|\[5-9\]%g’ ${TOP}/source/binutils-${BINUTILS_VERSION}/configure
#${TOP}/source/binutils-${BINUTILS_VERSION}/configure–prefix=${TARGET_PREFIX}–target=${CLFS_TARGET}–with-sysroot=${SYSROOT}–disable-nls–enable-shared–disable-multilib–enable-werror=no
#makeconfigure-host
#make
#makeinstall
#cp-v${TOP}/source/binutils-${BINUTILS_VERSION}/include/libiberty.h${SYSROOT}/usr/include
5、安装Glibc的头文件
#echo“5.InstalltheGlibcHeaders”|tee-a~/make_cross.txt
#cd${TOP}/source
#tar-jxf${TAR}/glibc-${GLIBC_VERSION}.tar.bz2
#mvglibc-${GLIBC_VERSION} glibc-${GLIBC_VERSION}-headers-build
#cdglibc-${GLIBC_VERSION}-headers-build
#cpconfigure{,.orig}
#sed-e‘s/3.4/3.[0-9]/g’configure.orig>configure
#tar-jxf${TAR}/glibc-ports-${GLIBC_VERSION}.tar.bz2
#mvglibc-ports-${GLIBC_VERSION} ports
#mkdir-p${TOP}/source/BUILD/glibc-${GLIBC_VERSION}-headers-build
#cd${TOP}/source/BUILD/glibc-${GLIBC_VERSION}-headers-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
#exportCC=gcc
#sed-i‘s%2.1\[3-9\]\*%2.1\[3-9\]\*|2.2\*%g’ ${TOP}/source/glibc-${GLIBC_VERSION}-headers-build/configure ——–#as和ld版本太新
#${TOP}/source/glibc-${GLIBC_VERSION}-headers-build/configure–prefix=/usr–host=${CLFS_TARGET}–with-headers=${SYSROOT}/usr/include–cache-file=config.cache
#makeinstall-headersinstall_root=${SYSROOT}
#cp-vbits/stdio_lim.h${SYSROOT}/usr/include/bits
#touch${SYSROOT}/usr/include/gnu/stubs.h
#cp-f${TOP}/source/glibc-${GLIBC_VERSION}-headers-build/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h ${SYSROOT}/usr/include/bits
6、编译gcc(第一阶段,生成临时arm-linux-gcc)
#echo“6.CompileGccFirstly”|tee-a~/make_cross.txt
#exportCC=gcc
#cd${TOP}/source
#tar-jxf${TAR}/gcc-${GCC_VERSION}.tar.bz2
#mvgcc-${GCC_VERSION}gcc-${GCC_VERSION}-stage1
#cdgcc-${GCC_VERSION}-stage1
#patch-Np1-i${TAR}/gcc-${GCC_VERSION}-posix-1.patch
#patch-Np1-i${TAR}/gcc-${GCC_VERSION}-cross_search_paths-1.patch
#cd${TOP}/source
#mkdir-pBUILD/gcc-${GCC_VERSION}-stage1
#cdBUILD/gcc-${GCC_VERSION}-stage1
#${TOP}/source/gcc-${GCC_VERSION}-stage1/configure–prefix=${TARGET_PREFIX}–host=${MACHTYPE}–target=${CLFS_TARGET}–disable-multilib–with-sysroot=${SYSROOT}–disable-nls–disable-shared–enable-languages=c
#makeall-gcc
#makeinstall-gcc
7、编译库文件GLIBC
#echo“7.CompileGlibcLibraries”|tee-a~/make_cross.txt
#cd${TOP}/source
#tar-jxf${TAR}/glibc-${GLIBC_VERSION}.tar.bz2
#cdglibc-${GLIBC_VERSION}
#tar-jxf${TAR}/glibc-ports-${GLIBC_VERSION}.tar.bz2
#mvglibc-ports-${GLIBC_VERSION} ports
#patch-Np1-i${TAR}/glibc-2.6.1-libgcc_eh-1.patch
#patch-Np1-i${TAR}/glibc-2.6.1-localedef_segfault-1.patch
#patch-Np1-i${TAR}/glibc-2.6.1-cross_hacks-1.patch
#patch-Np1-i${TAR}/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
#mkdir-p${TOP}/source/BUILD/glibc-${GLIBC_VERSION}
#cd${TOP}/source/BUILD/glibc-${GLIBC_VERSION}
#echo“libc_cv_forced_unwind=yes”>config.cache
#echo“libc_cv_c_cleanup=yes”>>config.cache
#echo“libc_cv_arm_tls=yes”>>config.cache
#exportBUILD_CC=gcc
#exportCC=”${CLFS_TARGET}-gcc”
#exportAR=”${CLFS_TARGET}-ar”
#exportRANLIB=”${CLFS_TARGET}-ranlib”
#sed-i‘/#include“locfile-kw.h”/aconststructkeyword_t*locfile_hash(registerconstchar*str,registerunsignedintlen);’ ${TOP}/source/glibc-${GLIBC_VERSION}/locale/programs/locfile.c
#sed-i‘/#include“charmap-kw.h”/aconststructkeyword_t*charmap_hash(registerconstchar*str,registerunsignedintlen);’ ${TOP}/source/glibc-${GLIBC_VERSION}/locale/programs/charmap.c
#${TOP}/source/glibc-${GLIBC_VERSION}/configure–prefix=/usr–libexecdir=/usr/lib/glibc–host=${CLFS_TARGET}–build=${MACHTYPE}–disable-profile–enable-add-ons–with-tls–enable-kernel=2.6.0–with-__thread–with-binutils=${TARGET_PREFIX}/bin–with-headers=${SYSROOT}/usr/include–cache-file=config.cache
#make
#makeinstallinstall_root=${SYSROOT}
8、编译gcc(第二阶段,生成最终arm-linux-gcc)
#echo“8.CompileGccSecondly”|tee-a~/make_cross.txt
#exportCC=gcc
#cd${TOP}/source
#tar-jxf${TAR}/gcc-${GCC_VERSION}.tar.bz2
#mvgcc-${GCC_VERSION}gcc-${GCC_VERSION}-stage2
#cdgcc-${GCC_VERSION}-stage2
#patch-Np1-i${TAR}/gcc-${GCC_VERSION}-posix-1.patch
#patch-Np1-i${TAR}/gcc-${GCC_VERSION}-cross_search_paths-1.patch
#cd${TOP}/source
#mkdir-pBUILD/gcc-${GCC_VERSION}-stage2
#cdBUILD/gcc-${GCC_VERSION}-stage2
#${TOP}/source/gcc-${GCC_VERSION}-stage2/configure–prefix=${TARGET_PREFIX}–host=${MACHTYPE}–target=${CLFS_TARGET}–disable-multilib–with-sysroot=${SYSROOT}–disable-nls–enable-shared–enable-languages=c,c++–enable-__cxa_atexit–enable-c99–enable-long-long–enable-threads=posix
#makeall-gcc
#makeinstall-gccinstall_root=${TARGET_PREFIX}
9、编译GDB
#echo“9.CompileGDB”|tee-a~/make_cross.txt
#exportCC=gcc
#cd${TOP}/source
#tar-jxf${TAR}/gdb-${GDB_VERSION}a.tar.bz2
#apt-get-yinstalllibncurses5-dev
#mkdir-pBUILD/gdb-${GDB_VERSION}
#cdBUILD/gdb-${GDB_VERSION}
#echo“9.1.CompileGDBClient”|tee-a~/make_cross.txt
#${TOP}/source/gdb-${GDB_VERSION}/configure–target=${CLFS_TARGET} –prefix=${TARGET_PREFIX}
#make
#makeinstall
#echo“9.2.CompileGDBServer”|tee-a~/make_cross.txt
#exportCC=arm-linux-gcc
#mkdir-pgdbserver
#cdgdbserver
#${TOP}/source/gdb-${GDB_VERSION}/gdb/gdbserver/configure–target=${CLFS_TARGET} –host=${CLFS_TARGET}
#sed-i‘s|#defineHAVE_SYS_REG_H|//#defineHAVE_SYS_REG_H|g’config.h
#makeCC=arm-linux-gcc
#cpgdbserver${TARGET_PREFIX}/bin
#echo“TheGDBServerbinraryiscopiedinto${TARGET_PREFIX}/bin”|tee-a~/make_cross.txt
#echo‘!
!
!
!
AllWellDone!
!
!
!
!
’|tee-a~/make_cross.txt
#echo“Thecrosstoolisat/usr/local/arm/4.2.1/bindirectory, rebootthehostplease”
自动创建工具链的脚本文件从“这里”下载,在运行脚本前确保网络是通的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手工 制作 最新版 armlinux 交叉 工具