下载http://ymorin.is-a-geek.org/download/crosstool-ng/
补丁http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.16.0.tar.bz2
tar xjf crosstool-ng-1.16.0.tar.bz2
cd crosstool-ng-1.16.0
./configure --prefix=/some/place
make
make install
export PATH="${PATH}:/some/place/bin"
cd /your/development/directory
ct-ng help
ct-ng menuconfig
ct-ng build
安装automake
./configure --prefix=/usr
make
make install
流程:
mkdir ~/build
cd ~/build
cp /usr/lib/ct-ng.1.16.0/samples/arm-unknown-linux-gnueabi/crosstool.config .config
ct-ng menuconfig
修改源码包和交叉编译工具的路径:
Paths and misc options --->
(${HOME}/development/crosstool-ng/src) Local tarballs directory 保存源码包路径
(${HOME}/development/x-tools/${CT_TARGET}) Prefix directory 交叉编译器的安装路径
修改相关的架构信息:
Target options --->
(armv4t) Architecture level
(arm9tdmi) Emit assembly for CPU
(arm920t) Tune for CPU
修改编译器的前缀名:
Toolchain options --->
(tekkaman) Tuple's vendor string
build
-----------------------------------------------------------------------------------------------------------------------------------------
附上我的.config文件
我的交叉工具链是基于arm920t、linux2.6.32.59、binutils2.21.1a、gcc4.3.2、eglibc2.10。
生成后路径为/root/x-tools/arm-unknown-linux-gnueabi/bin。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
# # Automatically generated make config: don't edit # crosstool-NG 1.16.0 Configuration # Sun Sep 30 17:27:05 2012 # CT_CONFIGURE_has_cvs=y CT_CONFIGURE_has_svn=y CT_MODULES=y # # Paths and misc options # # # crosstool-NG behavior # # CT_OBSOLETE is not set # CT_EXPERIMENTAL is not set # CT_DEBUG_CT is not set # # Paths # CT_LOCAL_TARBALLS_DIR="${HOME}/src" CT_SAVE_TARBALLS=y CT_WORK_DIR="${CT_TOP_DIR}/.build" CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}" CT_INSTALL_DIR="${CT_PREFIX_DIR}" CT_RM_RF_PREFIX_DIR=y # CT_REMOVE_DOCS is not set # CT_BUILD_MANUALS is not set CT_INSTALL_DIR_RO=y CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES=y # # Downloading # # CT_FORBID_DOWNLOAD is not set # CT_FORCE_DOWNLOAD is not set CT_CONNECT_TIMEOUT=10 # CT_ONLY_DOWNLOAD is not set # CT_USE_MIRROR is not set # # Extracting # # CT_FORCE_EXTRACT is not set CT_OVERIDE_CONFIG_GUESS_SUB=y # CT_ONLY_EXTRACT is not set CT_PATCH_BUNDLED=y # CT_PATCH_LOCAL is not set # CT_PATCH_BUNDLED_LOCAL is not set # CT_PATCH_LOCAL_BUNDLED is not set # CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set # CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set # CT_PATCH_NONE is not set CT_PATCH_ORDER="bundled" # # Build behavior # CT_PARALLEL_JOBS=0 CT_LOAD=0 CT_USE_PIPES=y CT_EXTRA_FLAGS_FOR_HOST="" # CT_CONFIG_SHELL_SH is not set # CT_CONFIG_SHELL_ASH is not set CT_CONFIG_SHELL_BASH=y # CT_CONFIG_SHELL_CUSTOM is not set CT_CONFIG_SHELL="${bash}" # # Logging # # CT_LOG_ERROR is not set # CT_LOG_WARN is not set # CT_LOG_INFO is not set CT_LOG_EXTRA=y # CT_LOG_ALL is not set # CT_LOG_DEBUG is not set CT_LOG_LEVEL_MAX="EXTRA" # CT_LOG_SEE_TOOLS_WARN is not set CT_LOG_PROGRESS_BAR=y CT_LOG_TO_FILE=y CT_LOG_FILE_COMPRESS=y # # Target options # CT_ARCH="arm" CT_ARCH_SUPPORTS_BOTH_MMU=y CT_ARCH_SUPPORTS_BOTH_ENDIAN=y CT_ARCH_SUPPORTS_32=y CT_ARCH_SUPPORTS_WITH_ARCH=y CT_ARCH_SUPPORTS_WITH_CPU=y CT_ARCH_SUPPORTS_WITH_TUNE=y CT_ARCH_SUPPORTS_WITH_FLOAT=y CT_ARCH_SUPPORTS_WITH_FPU=y CT_ARCH_SUPPORTS_SOFTFP=y CT_ARCH_DEFAULT_HAS_MMU=y CT_ARCH_DEFAULT_LE=y CT_ARCH_DEFAULT_32=y CT_ARCH_ARCH="armv4t" CT_ARCH_CPU="arm9tdmi" CT_ARCH_TUNE="arm920t" CT_ARCH_FPU="" # CT_ARCH_BE is not set CT_ARCH_LE=y CT_ARCH_32=y CT_ARCH_BITNESS=32 # CT_ARCH_FLOAT_HW is not set CT_ARCH_FLOAT_SW=y CT_TARGET_CFLAGS="" CT_TARGET_LDFLAGS="" # CT_ARCH_alpha is not set CT_ARCH_arm=y # CT_ARCH_avr32 is not set # CT_ARCH_blackfin is not set # CT_ARCH_mips is not set # CT_ARCH_powerpc is not set # CT_ARCH_sh is not set # CT_ARCH_sparc is not set # CT_ARCH_x86 is not set CT_ARCH_alpha_AVAILABLE=y CT_ARCH_arm_AVAILABLE=y CT_ARCH_avr32_AVAILABLE=y CT_ARCH_blackfin_AVAILABLE=y CT_ARCH_m68k_AVAILABLE=y CT_ARCH_mips_AVAILABLE=y CT_ARCH_powerpc_AVAILABLE=y CT_ARCH_s390_AVAILABLE=y CT_ARCH_sh_AVAILABLE=y CT_ARCH_sparc_AVAILABLE=y CT_ARCH_x86_AVAILABLE=y # # Generic target options # CT_ARCH_USE_MMU=y CT_ARCH_ENDIAN="little" # # Target optimisations # # CT_ARCH_FLOAT_SOFTFP is not set CT_ARCH_FLOAT="soft" # # arm other options # CT_ARCH_ARM_MODE="arm" CT_ARCH_ARM_MODE_ARM=y CT_ARCH_ARM_EABI=y # # Toolchain options # # # General toolchain options # CT_FORCE_SYSROOT=y CT_USE_SYSROOT=y CT_SYSROOT_NAME="sysroot" CT_SYSROOT_DIR_PREFIX="" CT_TOOLCHAIN_PKGVERSION="" CT_TOOLCHAIN_BUGURL="" # # Tuple completion and aliasing # CT_TARGET_VENDOR="unknown" CT_TARGET_ALIAS_SED_EXPR="" CT_TARGET_ALIAS="" # # Toolchain type # CT_CROSS=y CT_TOOLCHAIN_TYPE="cross" # # Build system # CT_BUILD="" CT_BUILD_PREFIX="" CT_BUILD_SUFFIX="" # # Misc options # # CT_TOOLCHAIN_ENABLE_NLS is not set # # Operating System # CT_KERNEL_SUPPORTS_SHARED_LIBS=y CT_KERNEL="linux" CT_KERNEL_VERSION="2.6.32.59" # CT_KERNEL_bare_metal is not set CT_KERNEL_linux=y CT_KERNEL_bare_metal_AVAILABLE=y CT_KERNEL_linux_AVAILABLE=y # CT_KERNEL_V_3_5 is not set # CT_KERNEL_V_3_4_7 is not set # CT_KERNEL_V_3_3_8 is not set # CT_KERNEL_V_3_2_25 is not set # CT_KERNEL_V_3_1_10 is not set # CT_KERNEL_V_3_0_39 is not set # CT_KERNEL_V_2_6_39_4 is not set # CT_KERNEL_V_2_6_38_8 is not set # CT_KERNEL_V_2_6_37_6 is not set # CT_KERNEL_V_2_6_36_4 is not set # CT_KERNEL_V_2_6_33_20 is not set CT_KERNEL_V_2_6_32_59=y # CT_KERNEL_V_2_6_31_14 is not set # CT_KERNEL_V_2_6_27_62 is not set # CT_KERNEL_LINUX_CUSTOM is not set CT_KERNEL_mingw32_AVAILABLE=y # # Common kernel options # CT_SHARED_LIBS=y # # linux other options # CT_KERNEL_LINUX_VERBOSITY_0=y # CT_KERNEL_LINUX_VERBOSITY_1 is not set # CT_KERNEL_LINUX_VERBOSITY_2 is not set CT_KERNEL_LINUX_VERBOSE_LEVEL=0 # CT_KERNEL_LINUX_INSTALL_CHECK is not set # # Binary utilities # CT_ARCH_BINFMT_ELF=y # # GNU binutils # CT_BINUTILS_V_2_21_1a=y # CT_BINUTILS_V_2_20_1a is not set # CT_BINUTILS_V_2_19_1a is not set # CT_BINUTILS_V_2_18a is not set CT_BINUTILS_VERSION="2.21.1a" CT_BINUTILS_2_21_or_later=y CT_BINUTILS_2_20_or_later=y CT_BINUTILS_2_19_or_later=y CT_BINUTILS_2_18_or_later=y CT_BINUTILS_HAS_HASH_STYLE=y CT_BINUTILS_HAS_GOLD=y CT_BINUTILS_GOLD_SUPPORTS_ARCH=y CT_BINUTILS_HAS_PLUGINS=y CT_BINUTILS_HAS_PKGVERSION_BUGURL=y CT_BINUTILS_FORCE_LD_BFD=y CT_BINUTILS_LINKER_LD=y CT_BINUTILS_LINKERS_LIST="ld" CT_BINUTILS_LINKER_DEFAULT="bfd" # CT_BINUTILS_PLUGINS is not set CT_BINUTILS_EXTRA_CONFIG_ARRAY="" CT_BINUTILS_FOR_TARGET=y CT_BINUTILS_FOR_TARGET_IBERTY=y CT_BINUTILS_FOR_TARGET_BFD=y # # C compiler # CT_CC="gcc" CT_CC_VERSION="4.3.2" CT_CC_gcc=y # CT_CC_V_4_6_3 is not set # CT_CC_V_4_6_2 is not set # CT_CC_V_4_6_1 is not set # CT_CC_V_4_6_0 is not set # CT_CC_V_4_5_3 is not set # CT_CC_V_4_5_2 is not set # CT_CC_V_4_5_1 is not set # CT_CC_V_4_5_0 is not set # CT_CC_V_4_4_7 is not set # CT_CC_V_4_4_6 is not set # CT_CC_V_4_4_5 is not set # CT_CC_V_4_4_4 is not set # CT_CC_V_4_4_3 is not set # CT_CC_V_4_4_2 is not set # CT_CC_V_4_4_1 is not set # CT_CC_V_4_4_0 is not set # CT_CC_V_4_3_6 is not set # CT_CC_V_4_3_5 is not set # CT_CC_V_4_3_4 is not set # CT_CC_V_4_3_3 is not set CT_CC_V_4_3_2=y # CT_CC_V_4_3_1 is not set # CT_CC_V_4_2_4 is not set # CT_CC_V_4_2_2 is not set CT_CC_GCC_4_2_or_later=y CT_CC_GCC_4_3=y CT_CC_GCC_4_3_or_later=y CT_CC_GCC_HAS_PKGVERSION_BUGURL=y CT_CC_GCC_USE_GMP_MPFR=y CT_CC_LANG_JAVA_USE_ECJ=y CT_CC_LANG_FORTRAN=y CT_CC_SUPPORT_CXX=y CT_CC_SUPPORT_FORTRAN=y CT_CC_SUPPORT_JAVA=y CT_CC_SUPPORT_ADA=y CT_CC_SUPPORT_OBJC=y CT_CC_SUPPORT_OBJCXX=y # # Additional supported languages: # CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y # # gcc other options # CT_CC_ENABLE_CXX_FLAGS="" CT_CC_CORE_EXTRA_CONFIG_ARRAY="" CT_CC_EXTRA_CONFIG_ARRAY="" # # Optimisation features # # # Settings for libraries running on target # CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y # CT_CC_GCC_LIBMUDFLAP is not set # CT_CC_GCC_LIBGOMP is not set # CT_CC_GCC_LIBSSP is not set # # Misc. obscure options. # CT_CC_CXA_ATEXIT=y # CT_CC_GCC_DISABLE_PCH is not set # CT_CC_GCC_SJLJ_EXCEPTIONS is not set CT_CC_GCC_LDBL_128=m # # C-library # CT_LIBC="eglibc" CT_LIBC_VERSION="2_10" CT_LIBC_eglibc=y # CT_LIBC_glibc is not set # CT_LIBC_uClibc is not set CT_LIBC_eglibc_AVAILABLE=y # CT_LIBC_EGLIBC_V_2_16 is not set # CT_LIBC_EGLIBC_V_2_15 is not set # CT_LIBC_EGLIBC_V_2_14 is not set # CT_LIBC_EGLIBC_V_2_13 is not set # CT_LIBC_EGLIBC_V_2_12 is not set # CT_LIBC_EGLIBC_V_2_11 is not set CT_LIBC_EGLIBC_V_2_10=y # CT_LIBC_EGLIBC_V_2_9 is not set # CT_LIBC_EGLIBC_V_TRUNK is not set CT_LIBC_EGLIBC_2_10_or_later=y CT_LIBC_EGLIBC_2_9_or_later=y CT_LIBC_EGLIBC_HAS_PKGVERSION_BUGURL=y CT_EGLIBC_REVISION="HEAD" # CT_EGLIBC_HTTP is not set # CT_EGLIBC_CHECKOUT is not set # CT_EGLIBC_OPT_SIZE is not set # CT_EGLIBC_CUSTOM_CONFIG is not set CT_LIBC_glibc_AVAILABLE=y CT_LIBC_mingw_AVAILABLE=y CT_LIBC_newlib_AVAILABLE=y CT_LIBC_none_AVAILABLE=y CT_LIBC_uClibc_AVAILABLE=y CT_LIBC_SUPPORT_THREADS_ANY=y CT_LIBC_SUPPORT_NPTL=y CT_LIBC_SUPPORT_LINUXTHREADS=y CT_THREADS="nptl" # # Common C library options # CT_THREADS_NPTL=y # CT_THREADS_LINUXTHREADS is not set CT_LIBC_XLDD=y # # eglibc other options # CT_LIBC_GLIBC_MAY_FORCE_PORTS=y CT_LIBC_glibc_familly=y CT_LIBC_GLIBC_EXTRA_CONFIG_ARRAY="" CT_LIBC_GLIBC_CONFIGPARMS="" CT_LIBC_GLIBC_EXTRA_CFLAGS="" CT_LIBC_EXTRA_CC_ARGS="" # CT_LIBC_DISABLE_VERSIONING is not set CT_LIBC_OLDEST_ABI="" # CT_LIBC_GLIBC_FORCE_UNWIND is not set CT_LIBC_GLIBC_USE_PORTS=y CT_LIBC_ADDONS_LIST="" # # WARNING !!! # # # For glibc >= 2.8, it can happen that the tarballs # # # for the addons are not available for download. # # # If that happens, bad luck... Try a previous version # # # or try again later... :-( # # CT_LIBC_LOCALES is not set # CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y # CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set CT_LIBC_GLIBC_MIN_KERNEL="2.6.32.59" # # Debug facilities # CT_DEBUG_dmalloc=y CT_DMALLOC_V_5_5_2=y CT_DMALLOC_VERSION="5.5.2" CT_DEBUG_duma=y CT_DUMA_A=y CT_DUMA_SO=y CT_DUMA_V_2_5_15=y CT_DUMA_VERSION="2_5_15" CT_DEBUG_gdb=y CT_GDB_CROSS=y # CT_GDB_CROSS_STATIC is not set CT_GDB_CROSS_PYTHON=y CT_GDB_CROSS_EXTRA_CONFIG_ARRAY="" CT_GDB_NATIVE=y # CT_GDB_NATIVE_STATIC is not set CT_GDB_GDBSERVER=y CT_GDB_GDBSERVER_STATIC=y # # gdb version # CT_GDB_V_6_8a=y CT_GDB_VERSION="6.8a" CT_DEBUG_ltrace=y CT_LTRACE_V_0_5_3=y # CT_LTRACE_V_0_5_2 is not set CT_LTRACE_VERSION="0.5.3" CT_LTRACE_0_5_3_or_later=y CT_DEBUG_strace=y CT_STRACE_V_4_5_19=y # CT_STRACE_V_4_5_18 is not set CT_STRACE_VERSION="4.5.19" # # Companion libraries # CT_COMPLIBS_NEEDED=y CT_GMP_NEEDED=y CT_MPFR_NEEDED=y CT_COMPLIBS=y CT_GMP=y CT_MPFR=y CT_LIBELF_TARGET=y # CT_GMP_V_5_0_2 is not set # CT_GMP_V_5_0_1 is not set CT_GMP_V_4_3_2=y # CT_GMP_V_4_3_1 is not set # CT_GMP_V_4_3_0 is not set CT_GMP_VERSION="4.3.2" CT_MPFR_V_3_1_0=y # CT_MPFR_V_3_0_1 is not set # CT_MPFR_V_3_0_0 is not set # CT_MPFR_V_2_4_2 is not set # CT_MPFR_V_2_4_1 is not set # CT_MPFR_V_2_4_0 is not set CT_MPFR_VERSION="3.1.0" # # libelf version needed to build for target # CT_LIBELF_V_0_8_13=y # CT_LIBELF_V_0_8_12 is not set CT_LIBELF_VERSION="0.8.13" # # Companion libraries common options # # CT_COMPLIBS_CHECK is not set