主题 : 利用crosstool-ng创建自己的交叉编译工具链toolchain 复制链接 | 浏览器收藏 | 打印
级别: 骑士
UID: 5844
精华: 9
发帖: 64
金钱: 770 两
威望: 154 点
贡献值: 9 点
综合积分: 308 分
注册时间: 2009-05-11
最后登录: 2019-05-14
楼主  发表于: 2013-01-04 17:51

 利用crosstool-ng创建自己的交叉编译工具链toolchain

    进行嵌入式Linux开发过程中,第一步通常就是选择交叉编译工具链(toolchain)。toolchain也许来自于开发板提供商,但有时候我们需要自定义某些功能,比如选择某一个特定版本的C library,或者让gcc的编译针对某一个特定平台进行优化,这时候厂商提供的toolchain也许就不能满足我们的需求,这时候就需要自行做成toolchain。
    自定义toolchain的部件中最重要有3个组成部分:c library, gcc , 附带加一个gdb。
    c library是以后需要搭建的系统的基础,几乎所有的软件都基于这个C library,因此创建toolchain过程中编译好的c library也会拷贝到目标系统中。
    c library通常有 newlib, eglibc, glibc, uclibc 四种选择,各自对应不同的需求,前面3个通常用于有MMU的系统,最后一个用于没有MMU的系统。传统的linux发行版通常采用glibc,这是gnu的c library,大而全。eglibc针对嵌入式进行优化,并且二进制兼容glibc,目前的debian和ubuntu已经从glibc转移到eglibc。
    编译器的选择几乎就只有gcc了,只是选择哪一个版本的问题。linaro 项目针对arm平台优化kernel,编译工具,部分软件,因此可以采用linaro项目优化过的gcc从中获益性能的提升。
    gdb可以参考linaro项目优化过的gdb版本,并且采用高版本的gdb可以更好的和kgdb配合调试linux内核。

    做成toolchain的过程很无趣,如果想要手工做成,体验这个过程的话,可以参考linuxfromscratch项目的clfs部分。其中的重点就是需要多次编译gcc。当然我们也可以采用自动化工具自行编译toolchain,crosstool-ng项目就是做这个事情的。它采用和编译内核一样的配置菜单进行配置,可以选择c library,gcc,gdb等等,并自动下载,编译生成toolchain。

    需要注意的是,crosstool-ng 最好采用开发板本,这样才能支持linaro项目中的新近gcc或者gdb。当然 crosstool-ng 的开发版本需要自行编译了,不过很简单,configure ,make,make install 就ok的。

    假定 crosstool-ng 已经编译到系统中,toolchain编译到/opt/gcc47-eglibc216-cortexa8-hardfloat目录,crosstool-ng 的工作目录是/root/CT-NG, 登录用户是 root。
        !! crosstool-ng 不建议使用 root 用户编译toolchain,你可以为 /opt/gcc47-eglibc216-cortexa8-hardfloat 设定某一个普通用户可写权限的话,就可以用普通用户编译了。

    在/root/CT-NG目录下,运行 #ct-ng menuconfig 进行配置,配置的结果会保存在 /root/CT-NG/.config 文件中,因此你也可以直接编辑 .config 这个文件。

    需要注意的是:
        如果想要编译 linaro 项目的gcc和gdb,就需要选择 CT_EXPERIMENTAL。
        如果编译到某一步失败,希望修改好以后继续从这一步开始的话,就需要让 crosstool-ng 记录进行到哪一步了,这个需要选择 CT_DEBUG_CT 和 CT_DEBUG_CT_SAVE_STEPS。

    通过 #ct-ng -j 4 build 重新全部编译整个toolchain。-j 4 是 make 过程中, 4路并发同时编译,这在多核系统中能加快编译速度。

    当整个toolchain编译完成后,/opt/gcc47-eglibc216-cortexa8-hardfloat/arm-unknown-linux-gnueabi/sysroot 目录就是以后目标系统的根文件系统的基础部分。

    通过 #ct-ng list-steps 显示一共都有哪些步骤。
    ------------------------------------------------------------------------------------
    root@Seagate:/root/CT-NG# ct-ng  list-steps
    Available build steps, in order:
    - libc_check_config
    - companion_libs_for_build
    - binutils_for_build
    - companion_libs_for_host
    - binutils_for_host
    - cc_core_pass_1
    - kernel_headers
    - libc_start_files
    - cc_core_pass_2
    - libc
    - cc_for_build
    - cc_for_host
    - libc_finish
    - libelf_for_target
    - binutils_for_target
    - debug
    - test_suite
    - finish
    Use "<step>" as action to execute only that step.
    Use "+<step>" as action to execute up to that step.
    Use "<step>+" as action to execute from that step onward.
    ------------------------------------------------------------------------------------
    
    我的开发板是 Tiny210v2 ,ARM cortex-a8 平台,因此在crosstool-ng的配置菜单中,选择 eglibc,gcc-linaro, gdb-linaro 3个最重要的部件,并且针对 armv7 指令集和 cortex-a8 以及硬件浮点运算(hardfloat) neon进行优化。下面是.config 配置文件的内容:
    你也可以将这个 .config 拷贝到 /root/CT-NG 目录中,然后通过 #ct-ng menuconfig 查看图形化的配置情况。
    ------------------------------------------------------------------------------------
    #
    # Automatically generated make config: don't edit
    # crosstool-NG hg+unknown-20130103.094521 Configuration
    # Thu Jan  3 14:20:07 2013
    #
    CT_CONFIGURE_has_xz=y
    CT_CONFIGURE_has_svn=y
    CT_MODULES=y
    
    #
    # Paths and misc options
    #
    
    #
    # crosstool-NG behavior
    #
    # CT_OBSOLETE is not set
    CT_EXPERIMENTAL=y
    CT_DEBUG_CT=y
    # CT_DEBUG_PAUSE_STEPS is not set
    CT_DEBUG_CT_SAVE_STEPS=y
    CT_DEBUG_CT_SAVE_STEPS_GZIP=y
    # CT_NO_OVERIDE_LC_MESSAGES is not set
    # CT_DEBUG_INTERACTIVE is not set
    
    #
    # Paths
    #
    CT_LOCAL_TARBALLS_DIR="/opt/S5PV210/source/toolchain/crosstool-ng"
    CT_SAVE_TARBALLS=y
    CT_CUSTOM_LOCATION_ROOT_DIR=""
    CT_WORK_DIR="${CT_TOP_DIR}/.build"
    CT_PREFIX_DIR="/opt/gcc47-eglibc216-cortexa8-hardfloat"
    CT_INSTALL_DIR="${CT_PREFIX_DIR}"
    CT_RM_RF_PREFIX_DIR=y
    CT_REMOVE_DOCS=y
    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=4
    CT_LOAD=0
    CT_USE_PIPES=y
    CT_EXTRA_CFLAGS_FOR_BUILD=""
    CT_EXTRA_LDFLAGS_FOR_BUILD=""
    CT_EXTRA_CFLAGS_FOR_HOST=""
    CT_EXTRA_LDFLAGS_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="armv7-a"
    CT_ARCH_CPU="cortex-a8"
    CT_ARCH_TUNE="cortex-a8"
    CT_ARCH_FPU="neon"
    # CT_ARCH_BE is not set
    CT_ARCH_LE=y
    CT_ARCH_32=y
    CT_ARCH_BITNESS=32
    CT_ARCH_FLOAT_HW=y
    # CT_ARCH_FLOAT_SW is not set
    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_m68k is not set
    # CT_ARCH_microblaze is not set
    # CT_ARCH_mips is not set
    # CT_ARCH_powerpc is not set
    # CT_ARCH_s390 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_microblaze_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_MULTILIB is not set
    CT_ARCH_USE_MMU=y
    CT_ARCH_ENDIAN="little"
    
    #
    # Target optimisations
    #
    # CT_ARCH_FLOAT_SOFTFP is not set
    CT_ARCH_FLOAT="hard"
    
    #
    # arm other options
    #
    CT_ARCH_ARM_MODE="arm"
    CT_ARCH_ARM_MODE_ARM=y
    # CT_ARCH_ARM_MODE_THUMB is not set
    # CT_ARCH_ARM_INTERWORKING is not set
    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_WANTS_STATIC_LINK=y
    # CT_STATIC_TOOLCHAIN is not set
    CT_TOOLCHAIN_PKGVERSION="S5PV210"
    CT_TOOLCHAIN_BUGURL=""
    
    #
    # Tuple completion and aliasing
    #
    CT_TARGET_VENDOR="unknown"
    CT_TARGET_ALIAS_SED_EXPR=""
    CT_TARGET_ALIAS="arm-linux"
    
    #
    # Toolchain type
    #
    # CT_NATIVE is not set
    CT_CROSS=y
    # CT_CROSS_NATIVE is not set
    # CT_CANADIAN is not set
    CT_TOOLCHAIN_TYPE="cross"
    
    #
    # Build system
    #
    CT_BUILD=""
    CT_BUILD_PREFIX=""
    CT_BUILD_SUFFIX=""
    
    #
    # Misc options
    #
    CT_TOOLCHAIN_ENABLE_NLS=y
    
    #
    # Operating System
    #
    CT_KERNEL_SUPPORTS_SHARED_LIBS=y
    CT_KERNEL="linux"
    CT_KERNEL_VERSION="2.6.36.4"
    # 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_7 is not set
    # CT_KERNEL_V_3_6_10 is not set
    # CT_KERNEL_V_3_5_7 is not set
    # CT_KERNEL_V_3_4_23 is not set
    # CT_KERNEL_V_3_3_8 is not set
    # CT_KERNEL_V_3_2_35 is not set
    # CT_KERNEL_V_3_1_10 is not set
    # CT_KERNEL_V_3_0_56 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=y
    # CT_KERNEL_V_2_6_33_20 is not set
    # CT_KERNEL_V_2_6_32_60 is not set
    # 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_windows_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=y
    
    #
    # Binary utilities
    #
    CT_ARCH_BINFMT_ELF=y
    CT_BINUTILS="binutils"
    CT_BINUTILS_binutils=y
    
    #
    # GNU binutils
    #
    CT_BINUTILS_V_2_22=y
    # CT_BINUTILS_V_2_21_53 is not set
    # CT_BINUTILS_V_2_21_1a is not set
    # 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_CUSTOM is not set
    CT_BINUTILS_VERSION="2.22"
    CT_BINUTILS_2_22_or_later=y
    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_LINKER_LD_GOLD is not set
    # CT_BINUTILS_LINKER_GOLD_LD is not set
    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
    
    #
    # binutils other options
    #
    
    #
    # C compiler
    #
    CT_CC="gcc"
    CT_CC_VERSION="linaro-4.7-2012.12"
    CT_CC_CORE_PASSES_NEEDED=y
    CT_CC_gcc=y
    CT_CC_GCC_SHOW_LINARO=y
    CT_CC_V_linaro_4_7_2012_12=y
    # CT_CC_V_4_7_2 is not set
    # CT_CC_V_4_7_1 is not set
    # CT_CC_V_4_7_0 is not set
    # CT_CC_V_linaro_4_6_2012_12 is not set
    # 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_linaro_4_5_2012_03 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_linaro_4_4_2011_02_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 is not set
    # 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_CUSTOM is not set
    CT_CC_GCC_4_2_or_later=y
    CT_CC_GCC_4_3_or_later=y
    CT_CC_GCC_4_4_or_later=y
    CT_CC_GCC_4_5_or_later=y
    CT_CC_GCC_4_6_or_later=y
    CT_CC_GCC_4_7=y
    CT_CC_GCC_4_7_or_later=y
    CT_CC_GCC_HAS_GRAPHITE=y
    CT_CC_GCC_HAS_LTO=y
    CT_CC_GCC_HAS_PKGVERSION_BUGURL=y
    CT_CC_GCC_HAS_BUILD_ID=y
    CT_CC_GCC_HAS_LNK_HASH_STYLE=y
    CT_CC_GCC_USE_GMP_MPFR=y
    CT_CC_GCC_USE_PPL_CLOOG=y
    CT_CC_GCC_USE_MPC=y
    CT_CC_GCC_HAS_LIBQUADMATH=y
    # CT_CC_LANG_FORTRAN is not set
    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 is not set
    # CT_CC_LANG_ADA is not set
    # CT_CC_LANG_OBJC is not set
    # CT_CC_LANG_OBJCXX is not set
    CT_CC_LANG_OTHERS=""
    
    #
    # gcc other options
    #
    CT_CC_ENABLE_CXX_FLAGS=""
    CT_CC_CORE_EXTRA_CONFIG_ARRAY=""
    CT_CC_EXTRA_CONFIG_ARRAY=""
    CT_CC_STATIC_LIBSTDCXX=y
    # CT_CC_GCC_SYSTEM_ZLIB is not set
    
    #
    # Optimisation features
    #
    CT_CC_GCC_USE_GRAPHITE=y
    CT_CC_GCC_USE_LTO=y
    
    #
    # 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
    # CT_CC_GCC_LIBQUADMATH 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 is not set
    # CT_CC_GCC_BUILD_ID is not set
    CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y
    # CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set
    # CT_CC_GCC_LNK_HASH_STYLE_GNU is not set
    # CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set
    CT_CC_GCC_LNK_HASH_STYLE=""
    
    #
    # C-library
    #
    CT_LIBC="eglibc"
    CT_LIBC_VERSION="2_16"
    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=y
    # 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 is not set
    # CT_LIBC_EGLIBC_V_2_9 is not set
    # CT_LIBC_EGLIBC_V_TRUNK is not set
    CT_LIBC_EGLIBC_2_16_or_later=y
    CT_LIBC_EGLIBC_2_15_or_later=y
    CT_LIBC_EGLIBC_2_14_or_later=y
    CT_LIBC_EGLIBC_2_13_or_later=y
    CT_LIBC_EGLIBC_2_12_or_later=y
    CT_LIBC_EGLIBC_2_11_or_later=y
    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_ENABLE_FORTIFIED_BUILD is not set
    # CT_LIBC_DISABLE_VERSIONING is not set
    CT_LIBC_OLDEST_ABI=""
    CT_LIBC_GLIBC_FORCE_UNWIND=y
    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=y
    # CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set
    # CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS is not set
    CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN=y
    CT_LIBC_GLIBC_MIN_KERNEL_VERSION="2.6.12"
    CT_LIBC_GLIBC_MIN_KERNEL="2.6.12"
    
    #
    # 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_SIM 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_HAS_IPA_LIB=y
    CT_GDB_GDBSERVER_STATIC=y
    
    #
    # gdb version
    #
    CT_DEBUG_GDB_SHOW_LINARO=y
    CT_GDB_V_linaro_7_5_2012_12_1=y
    # CT_GDB_V_linaro_7_4_2012_06 is not set
    # CT_GDB_V_7_4_1 is not set
    # CT_GDB_V_7_4 is not set
    # CT_GDB_V_linaro_7_3_2011_12 is not set
    # CT_GDB_V_7_3_1 is not set
    # CT_GDB_V_7_3a is not set
    # CT_GDB_V_linaro_7_2_2011_05_0 is not set
    # CT_GDB_V_7_2a is not set
    # CT_GDB_V_7_1a is not set
    # CT_GDB_V_7_0_1a is not set
    # CT_GDB_V_7_0a is not set
    # CT_GDB_V_6_8a is not set
    # CT_GDB_CUSTOM is not set
    CT_GDB_7_2_or_later=y
    CT_GDB_7_0_or_later=y
    CT_GDB_HAS_PKGVERSION_BUGURL=y
    CT_GDB_INSTALL_GDBINIT=y
    CT_GDB_VERSION="linaro-7.5-2012.12-1"
    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_6 is not set
    # CT_STRACE_V_4_5_20 is not set
    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_PPL_NEEDED=y
    CT_CLOOG_NEEDED=y
    CT_MPC_NEEDED=y
    CT_COMPLIBS=y
    CT_GMP=y
    CT_MPFR=y
    CT_PPL=y
    CT_CLOOG=y
    CT_MPC=y
    CT_LIBELF_TARGET=y
    CT_GMP_V_5_0_2=y
    # CT_GMP_V_5_0_1 is not set
    # CT_GMP_V_4_3_2 is not set
    # CT_GMP_V_4_3_1 is not set
    # CT_GMP_V_4_3_0 is not set
    CT_GMP_VERSION="5.0.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"
    CT_PPL_V_0_11_2=y
    # CT_PPL_V_0_11_1 is not set
    # CT_PPL_V_0_11 is not set
    # CT_PPL_V_0_10_2 is not set
    CT_PPL_VERSION="0.11.2"
    CT_PPL_0_11=y
    CT_PPL_NEEDS_LIBPWL=y
    CT_CLOOG_V_0_15_11=y
    # CT_CLOOG_V_0_15_10 is not set
    # CT_CLOOG_V_0_15_9 is not set
    # CT_CLOOG_V_0_15_8 is not set
    # CT_CLOOG_V_0_15_7 is not set
    # CT_CLOOG_V_0_15_6 is not set
    CT_CLOOG_VERSION="0.15.11"
    CT_CLOOG_0_15_1x=y
    CT_CLOOG_NEEDS_AUTORECONF=y
    CT_MPC_V_0_9=y
    # CT_MPC_V_0_8_2 is not set
    # CT_MPC_V_0_8_1 is not set
    # CT_MPC_V_0_7 is not set
    CT_MPC_VERSION="0.9"
    
    #
    # 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
    
    #
    # Companion tools
    #
    
    #
    # READ HELP before you say 'Y' below !!!
    #
    # CT_COMP_TOOLS is not set
    
    #
    # Test suite
    #
    # CT_TEST_SUITE_GCC is not set
    ------------------------------------------------------------------------------------

    编译的过程很顺利,下面是整个编译过程的log:
    ------------------------------------------------------------------------------------
    root@Seagate:/root/CT-NG# ct-ng  -j 4 build
    [INFO ]  Performing some trivial sanity checks
    [INFO ]  Build started 20130104.093325
    [INFO ]  Building environment variables
    [EXTRA]  Preparing working directories
    [EXTRA]  Installing user-supplied crosstool-NG configuration
    [EXTRA]  =================================================================
    [EXTRA]  Dumping internal crosstool-NG configuration
    [EXTRA]    Building a toolchain for:
    [EXTRA]      build  = i686-pc-linux-gnu
    [EXTRA]      host   = i686-pc-linux-gnu
    [EXTRA]      target = arm-unknown-linux-gnueabi
    [EXTRA]  Dumping internal crosstool-NG configuration: done in 0.08s (at 00:02)
    [INFO ]  =================================================================
    [INFO ]  Retrieving needed toolchain components' tarballs
    [INFO ]  Retrieving needed toolchain components' tarballs: done in 0.38s (at 00:02)
    [INFO ]  =================================================================
    [INFO ]  Extracting and patching toolchain components
    [EXTRA]    Extracting 'linux-2.6.36.4'
    [EXTRA]    Patching 'linux-2.6.36.4'
    [EXTRA]    Extracting 'gmp-5.0.2'
    [EXTRA]    Patching 'gmp-5.0.2'
    [EXTRA]    Extracting 'mpfr-3.1.0'
    [EXTRA]    Patching 'mpfr-3.1.0'
    [EXTRA]    Extracting 'ppl-0.11.2'
    [EXTRA]    Patching 'ppl-0.11.2'
    [EXTRA]    Extracting 'cloog-ppl-0.15.11'
    [EXTRA]    Patching 'cloog-ppl-0.15.11'
    [EXTRA]    Extracting 'mpc-0.9'
    [EXTRA]    Patching 'mpc-0.9'
    [EXTRA]    Extracting 'libelf-0.8.13'
    [EXTRA]    Patching 'libelf-0.8.13'
    [EXTRA]    Extracting 'binutils-2.22'
    [EXTRA]    Patching 'binutils-2.22'
    [EXTRA]    Extracting 'gcc-linaro-4.7-2012.12'
    [EXTRA]    Patching 'gcc-linaro-4.7-2012.12'
    [EXTRA]    Extracting 'eglibc-2_16'
    [EXTRA]    Patching 'eglibc-2_16'
    [EXTRA]    Extracting 'eglibc-ports-2_16'
    [EXTRA]    Patching 'eglibc-ports-2_16'
    [EXTRA]    Extracting 'eglibc-localedef-2_16'
    [EXTRA]    Patching 'eglibc-localedef-2_16'
    [EXTRA]    Extracting 'dmalloc-5.5.2'
    [EXTRA]    Patching 'dmalloc-5.5.2'
    [EXTRA]    Extracting 'duma_2_5_15'
    [EXTRA]    Patching 'duma-2_5_15'
    [EXTRA]    Extracting 'gdb-linaro-7.5-2012.12-1'
    [EXTRA]    Patching 'gdb-linaro-7.5-2012.12-1'
    [EXTRA]    Extracting 'ncurses-5.9'
    [EXTRA]    Patching 'ncurses-5.9'
    [EXTRA]    Extracting 'expat-2.1.0'
    [EXTRA]    Patching 'expat-2.1.0'
    [EXTRA]    Extracting 'ltrace-0.5.3'
    [EXTRA]    Patching 'ltrace-0.5.3'
    [EXTRA]    Extracting 'strace-4.5.19'
    [EXTRA]    Patching 'strace-4.5.19'
    [INFO ]  Extracting and patching toolchain components: done in 287.49s (at 04:50)
    [EXTRA]  Saving state to restart at step 'libc_check_config'...
    [EXTRA]  Saving state to restart at step 'companion_libs_for_build'...
    [EXTRA]  Saving state to restart at step 'binutils_for_build'...
    [EXTRA]  Saving state to restart at step 'companion_libs_for_host'...
    [INFO ]  =================================================================
    [INFO ]  Installing GMP for host
    [EXTRA]    Configuring GMP
    [EXTRA]    Building GMP
    [EXTRA]    Installing GMP
    [INFO ]  Installing GMP for host: done in 45.46s (at 05:37)
    [INFO ]  =================================================================
    [INFO ]  Installing MPFR for host
    [EXTRA]    Configuring MPFR
    [EXTRA]    Building MPFR
    [EXTRA]    Installing MPFR
    [INFO ]  Installing MPFR for host: done in 17.13s (at 05:54)
    [INFO ]  =================================================================
    [INFO ]  Installing PPL for host
    [EXTRA]    Configuring PPL
    [EXTRA]    Building PPL
    [EXTRA]    Installing PPL
    [INFO ]  Installing PPL for host: done in 167.13s (at 08:41)
    [INFO ]  =================================================================
    [INFO ]  Installing CLooG/PPL for host
    [EXTRA]    Configuring CLooG/ppl
    [EXTRA]    Building CLooG/ppl
    [EXTRA]    Installing CLooG/ppl
    [INFO ]  Installing CLooG/PPL for host: done in 11.30s (at 08:53)
    [INFO ]  =================================================================
    [INFO ]  Installing MPC for host
    [EXTRA]    Configuring MPC
    [EXTRA]    Building MPC
    [EXTRA]    Installing MPC
    [INFO ]  Installing MPC for host: done in 8.14s (at 09:01)
    [EXTRA]  Saving state to restart at step 'binutils_for_host'...
    [INFO ]  =================================================================
    [INFO ]  Installing binutils for host
    [EXTRA]    Configuring binutils
    [EXTRA]    Building binutils
    [EXTRA]    Installing binutils
    [INFO ]  Installing binutils for host: done in 58.25s (at 10:04)
    [EXTRA]  Saving state to restart at step 'cc_core_pass_1'...
    [INFO ]  =================================================================
    [INFO ]  Installing pass-1 core C compiler
    [EXTRA]    Configuring gcc
    [EXTRA]    Building gcc
    [EXTRA]    Installing gcc
    [INFO ]  Installing pass-1 core C compiler: done in 279.08s (at 14:47)
    [EXTRA]  Saving state to restart at step 'kernel_headers'...
    [INFO ]  =================================================================
    [INFO ]  Installing kernel headers
    [EXTRA]    Installing kernel headers
    [EXTRA]    Checking installed headers
    [INFO ]  Installing kernel headers: done in 7.87s (at 15:05)
    [EXTRA]  Saving state to restart at step 'libc_start_files'...
    [INFO ]  =================================================================
    [INFO ]  Installing C library headers & start files
    [EXTRA]    Configuring C library
    [EXTRA]    Installing C library headers
    [EXTRA]    Installing C library start files
    [INFO ]  Installing C library headers & start files: done in 31.14s (at 15:46)
    [EXTRA]  Saving state to restart at step 'cc_core_pass_2'...
    [INFO ]  =================================================================
    [INFO ]  Installing pass-2 core C compiler
    [EXTRA]    Configuring gcc
    [EXTRA]    Building gcc
    [EXTRA]    Installing gcc
    [INFO ]  Installing pass-2 core C compiler: done in 341.97s (at 21:39)
    [EXTRA]  Saving state to restart at step 'libc'...
    [INFO ]  =================================================================
    [INFO ]  Installing C library
    [EXTRA]    Configuring C library
    [EXTRA]    Building C library
    [EXTRA]    Installing C library
    [EXTRA]    Configuring C library localedef
    [EXTRA]    Building C library localedef
    [EXTRA]    Installing C library locales
    [INFO ]  Installing C library: done in 416.22s (at 28:51)
    [EXTRA]  Saving state to restart at step 'cc_for_build'...
    [EXTRA]  Saving state to restart at step 'cc_for_host'...
    [INFO ]  =================================================================
    [INFO ]  Installing final compiler
    [EXTRA]    Configuring gcc
    [EXTRA]    Building gcc
    [EXTRA]    Installing gcc
    [INFO ]  Installing final compiler: done in 465.04s (at 37:15)
    [EXTRA]  Saving state to restart at step 'libc_finish'...
    [EXTRA]  Saving state to restart at step 'libelf_for_target'...
    [INFO ]  =================================================================
    [INFO ]  Installing libelf for the target
    [EXTRA]    Configuring libelf
    [EXTRA]    Building libelf
    [EXTRA]    Installing libelf
    [INFO ]  Installing libelf for the target: done in 6.03s (at 38:59)
    [EXTRA]  Saving state to restart at step 'binutils_for_target'...
    [INFO ]  =================================================================
    [INFO ]  Installing binutils for target
    [EXTRA]    Configuring binutils for target
    [EXTRA]    Building binutils' libraries (libiberty bfd) for target
    [EXTRA]    Installing binutils' libraries (libiberty bfd) for target
    [INFO ]  Installing binutils for target: done in 47.82s (at 40:29)
    [EXTRA]  Saving state to restart at step 'debug'...
    [INFO ]  =================================================================
    [INFO ]  Installing dmalloc
    [EXTRA]    Configuring dmalloc
    [EXTRA]    Building dmalloc
    [EXTRA]    Installing dmalloc
    [INFO ]  Installing dmalloc: done in 9.60s (at 41:16)
    [INFO ]  =================================================================
    [INFO ]  Installing D.U.M.A.
    [EXTRA]    Copying sources
    [EXTRA]    Building libraries 'libduma.a libduma.so.0.0.0'
    [EXTRA]    Installing libraries 'libduma.a libduma.so.0.0.0'
    [EXTRA]    Installing shared library link
    [EXTRA]    Installing wrapper script
    [INFO ]  Installing D.U.M.A.: done in 2.76s (at 41:19)
    [INFO ]  =================================================================
    [INFO ]  Installing cross-gdb
    [EXTRA]    Configuring cross-gdb
    [EXTRA]    Building cross-gdb
    [EXTRA]    Installing cross-gdb
    [EXTRA]    Install '.gdbinit' template
    [INFO ]  Installing cross-gdb: done in 111.67s (at 43:11)
    [INFO ]  =================================================================
    [INFO ]  Installing native gdb
    [EXTRA]    Building static target ncurses
    [EXTRA]    Building static target expat
    [EXTRA]    Configuring native gdb
    [EXTRA]    Building native gdb
    [EXTRA]    Installing native gdb
    [INFO ]  Installing native gdb: done in 170.47s (at 46:01)
    [INFO ]  =================================================================
    [INFO ]  Installing gdbserver
    [EXTRA]    Configuring gdbserver
    [EXTRA]    Building gdbserver
    [EXTRA]    Installing gdbserver
    [INFO ]  Installing gdbserver: done in 19.98s (at 46:21)
    [INFO ]  =================================================================
    [INFO ]  Installing ltrace
    [EXTRA]    Copying sources to build dir
    [EXTRA]    Configuring ltrace
    [EXTRA]    Building ltrace
    [EXTRA]    Installing ltrace
    [INFO ]  Installing ltrace: done in 3.66s (at 46:25)
    [INFO ]  =================================================================
    [INFO ]  Installing strace
    [EXTRA]    Configuring strace
    [EXTRA]    Building strace
    [EXTRA]    Installing strace
    [INFO ]  Installing strace: done in 12.82s (at 46:38)
    [EXTRA]  Saving state to restart at step 'test_suite'...
    [EXTRA]  Saving state to restart at step 'finish'...
    [INFO ]  =================================================================
    [INFO ]  Cleaning-up the toolchain's directory
    [INFO ]    Stripping all toolchain executables
    [EXTRA]    Installing the populate helper
    [EXTRA]    Installing a cross-ldd helper
    [EXTRA]    Creating toolchain aliases
    [EXTRA]    Removing access to the build system tools
    [EXTRA]    Removing installed documentation
    [INFO ]  Cleaning-up the toolchain's directory: done in 2.96s (at 48:21)
    [INFO ]  Build completed at 20130104.102145
    [INFO ]  (elapsed: 48:20.23)
    [INFO ]  Finishing installation (may take a few seconds)...[48:21]
    ------------------------------------------------------------------------------------
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2013-01-04 18:07
谢谢分享
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 67958
精华: 0
发帖: 27
金钱: 135 两
威望: 27 点
贡献值: 0 点
综合积分: 54 分
注册时间: 2012-04-17
最后登录: 2015-09-29
2楼  发表于: 2013-04-05 00:22
谢谢楼主
级别: 新手上路
UID: 100584
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2014-02-16
最后登录: 2014-02-27
3楼  发表于: 2014-02-22 19:25
you must not be root to run crosstool -NG
神奇了~不让用root身份,我换了个在root组的用户又说权限不足..郁闷