zoukankan      html  css  js  c++  java
  • Linux arm-linux交叉编译环境的配置

      声明来自http://blog.csdn.net/lianyq1986/article/details/6651447

    step:
    1.配置crosstool
    [root@localhost crosstool-ng-1.9.3]# ./configure --prefix=/opt/powerpc/install_dir/
    Checking for 'grep'... /bin/grep
    Checking whether '/bin/grep' supports -E... yes
    Checking for 'sed'... /bin/sed
    Checking whether '/bin/sed' supports -i and -e... yes
    Checking for 'bash'... /bin/bash
    Checking for 'cut'... /bin/cut
    Checking for 'install'... /usr/bin/install
    Checking for 'make'... /usr/bin/make
    Checking for 'gcc'... /usr/lib/ccache/gcc
    Checking for 'awk'... /bin/awk
    Checking for 'bison'... /usr/bin/bison
    Checking for 'flex'... /usr/bin/flex
    Checking for 'makeinfo'... /usr/bin/makeinfo
    Checking for 'automake'... /usr/bin/automake
    Checking for 'libtool'... /usr/bin/libtool
    Checking for 'stat'... /usr/bin/stat
    Checking for 'aria2c'... no
    Checking for 'curl'... /usr/bin/curl
    Checking for 'cvs'... /usr/bin/cvs
    Checking for 'patch'... /usr/bin/patch
    Checking for 'tar'... /bin/tar
    Checking for 'gzip'... /bin/gzip
    Checking for 'bzip2'... /usr/bin/bzip2
    Checking for 'lzma'... no

    lzma: none found

    Either you are missing entirely the needed tool,
    or the version you have is too old.

    configure: Bailing out...

    (yum install lzma后继续下一步)

    2.配置crosstool
    [root@localhost crosstool-ng-1.9.3]# ./configure --prefix=/opt/powerpc/install_dir/
    Checking for 'grep'... /bin/grep
    Checking whether '/bin/grep' supports -E... yes
    Checking for 'sed'... /bin/sed
    Checking whether '/bin/sed' supports -i and -e... yes
    Checking for 'bash'... /bin/bash
    Checking for 'cut'... /bin/cut
    Checking for 'install'... /usr/bin/install
    Checking for 'make'... /usr/bin/make
    Checking for 'gcc'... /usr/lib/ccache/gcc
    Checking for 'awk'... /bin/awk
    Checking for 'bison'... /usr/bin/bison
    Checking for 'flex'... /usr/bin/flex
    Checking for 'makeinfo'... /usr/bin/makeinfo
    Checking for 'automake'... /usr/bin/automake
    Checking for 'libtool'... /usr/bin/libtool
    Checking for 'stat'... /usr/bin/stat
    Checking for 'aria2c'... no
    Checking for 'curl'... /usr/bin/curl
    Checking for 'cvs'... /usr/bin/cvs
    Checking for 'patch'... /usr/bin/patch
    Checking for 'tar'... /bin/tar
    Checking for 'gzip'... /bin/gzip
    Checking for 'bzip2'... /usr/bin/bzip2
    Checking for 'lzma'... /usr/bin/lzma
    Checking for 'readlink'... /usr/bin/readlink
    Checking for 'objcopy'... /usr/bin/objcopy
    Checking for 'objdump'... /usr/bin/objdump
    Checking for 'readelf'... /usr/bin/readelf
    Checking for 'patch'... /usr/bin/patch
    Checking for 'ncurses/ncurses.h'... yes
    Checking for 'libncursesw.so'... yes
    Computing version string... 1.9.3
    Building up Makefile... done

    crosstool-NG configured as follows:
      PREFIX='/opt/powerpc/install_dir/'
      BINDIR='/opt/powerpc/install_dir//bin'
      LIBDIR='/opt/powerpc/install_dir//lib/ct-ng-1.9.3'
      DOCDIR='/opt/powerpc/install_dir//share/doc/ct-ng-1.9.3'
      MANDIR='/opt/powerpc/install_dir//share/man'

    Now run:
      make
      make install

    3. 编译
    [root@localhost crosstool-ng-1.9.3]# make
      SED    'ct-ng'
      SED    'scripts/crosstool-NG.sh'
      SED    'scripts/saveSample.sh'
      SED    'scripts/showTuple.sh'
      GEN    'paths.mk'
      SED    'docs/ct-ng.1'
      GZIP   'docs/ct-ng.1.gz'

    4. 安装到prefix指定路径
    [root@localhost crosstool-ng-1.9.3]# make install
      MKDIR   '/opt/powerpc/install_dir//bin/'
      INST    'ct-ng'
      RMDIR   '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/'
      MKDIR   '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/'
      INSTDIR 'config/'
      INSTDIR 'contrib/'
      INSTDIR 'kconfig/'
      INSTDIR 'patches/'
      INSTDIR 'scripts/'
      INST    'steps.mk'
      INST    'paths.mk'
      INSTDIR 'samples/'
      MKDIR   '/opt/powerpc/install_dir//share/doc/ct-ng-1.9.3/'
      INST    'docs/*.txt'
      MKDIR   '/opt/powerpc/install_dir//share/man/man1/'
      INST    'ct-ng.1.gz'

    For auto-completion, do not forget to install 'ct-ng.comp' into
    your bash completion directory (usually /etc/bash_completion.d)

    5.导入crosstool-ng的安装路径
    [root@localhost crosstool-ng-1.9.3]# export PATH=$PATH:/opt/powerpc/install_dir/bin/
    [root@localhost crosstool-ng-1.9.3]# echo $PATH
    /usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/powerpc/install_dir/bin/

    6.创建下载路径
    [root@localhost crosstool-ng-1.9.3]# mkdir dl
    [root@localhost crosstool-ng-1.9.3]# cd dl/    
    [root@localhost dl]# ls -l
    总计 134708
    -rwxr-xr-x 1 root root 16245771 08-01 15:24 binutils-2.19.1.tar.bz2
    -rw-r--r-- 1 root root   666608 08-01 15:26 dmalloc-5.5.2.tgz
    -rw-r--r-- 1 root root   240479 08-01 15:26 duma_2_5_15.tar.gz
    -rw-r--r-- 1 root root 44025458 08-01 15:25 gcc-4.2.4.tar.bz2
    -rwxr-xr-x 1 root root 15581509 08-01 15:25 gdb-6.8.tar.bz2
    -rw-r--r-- 1 root root  1897483 08-01 15:27 gmp-4.3.2.tar.bz2
    -rwxr-xr-x 1 root root 52737600 08-01 15:24 linux-2.6.28.10.tar.bz2
    -rw-r--r-- 1 root root  1138685 08-01 15:26 mpfr-3.0.0.tar.bz2
    -rw-r--r-- 1 root root  2445052 08-01 15:27 ncurses-5.7.tar.gz
    -rwxr-xr-x 1 root root   480973 08-01 15:26 strace-4.5.18.tar.bz2
    -rw-r--r-- 1 root root  2285137 08-01 15:25 uClibc-0.9.30.1.tar.bz2
    (提前准备好需要的软件包)

    7.在samples目录下有许多参考的配置文件
    [root@localhost crosstool-ng-1.9.3]# cp ppc8541_crosstool.config .config
    [root@localhost crosstool-ng-1.9.3]# ./ct-ng menuconfig
    (可以对配置进行修改)
    Paths and misc options下的配置
     Local tarballs directory: /opt/powerpc/crosstool-ng-1.9.3/dl
     Prefix directory : /opt/powerpc/crosstool-ng-1.9.3/x-tools/${CT_TARGET}
     (4) Number of parallel jobs

    Target options下的配置
     (8540) Emit assembly for CPU
     (8540) Tune for CPU

    Operating System下的配置
     Path to custom tarball : /opt/powerpc/crosstool-ng-1.9.3/dl/linux-2.6.28.10.tar.bz2

    C-library下的配置
     Configuration file : /opt/powerpc/crosstool-ng-1.9.3/ppc_e500_uClibc-0.9.30.1.config

    8.编译
    [root@localhost crosstool-ng-1.9.3]# ./ct-ng build
    [INFO ]  Performing some trivial sanity checks
    [INFO ]  Build started 20110801.154515
    [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 = powerpc-unknown-linux-uclibc
    [EXTRA]  Dumping internal crosstool-NG configuration: done in 0.16s (at 00:03)
    [INFO ]  =================================================================
    [INFO ]  Retrieving needed toolchain components' tarballs
    [EXTRA]    Retrieving 'expat-2.0.1'
    [EXTRA]    Saving 'expat-2.0.1.tar.gz' to local storage
    [INFO ]  Retrieving needed toolchain components' tarballs: done in 6.81s (at 00:10)
    [INFO ]  =================================================================
    [INFO ]  Extracting and patching toolchain components
    [EXTRA]    Extracting custom linux kernel
    [EXTRA]    Extracting 'binutils-2.19.1'
    [EXTRA]    Patching 'binutils-2.19.1'
    [EXTRA]    Extracting 'gcc-4.2.4'
    [EXTRA]    Patching 'gcc-4.2.4'
    [EXTRA]    Extracting 'uClibc-0.9.30.1'
    [EXTRA]    Patching 'uClibc-0.9.30.1'
    [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-6.8'
    [EXTRA]    Patching 'gdb-6.8'
    [EXTRA]    Extracting 'ncurses-5.7'
    [EXTRA]    Patching 'ncurses-5.7'
    [EXTRA]    Extracting 'expat-2.0.1'
    [EXTRA]    Patching 'expat-2.0.1'
    [EXTRA]    Extracting 'strace-4.5.18'
    [EXTRA]    Patching 'strace-4.5.18'
    [INFO ]  Extracting and patching toolchain components: done in 154.12s (at 02:44)
    [INFO ]  =================================================================
    [INFO ]  Checking C library configuration
    [EXTRA]    Munging uClibc configuration
    [INFO ]  Checking C library configuration: done in 0.26s (at 02:44)
    [INFO ]  =================================================================
    [INFO ]  Installing kernel headers
    [EXTRA]    Installing kernel headers
    [INFO ]  Installing kernel headers: done in 18.47s (at 03:03)
    [INFO ]  =================================================================
    [INFO ]  Installing binutils
    [EXTRA]    Configuring binutils
    [EXTRA]    Building binutils
    [INFO ]  Installing binutils: done in 155.41s (at 05:38)
    [INFO ]  =================================================================
    [INFO ]  Installing C library headers
    [EXTRA]    Copying sources to build dir
    [EXTRA]    Applying configuration
    [EXTRA]    Building headers
    [EXTRA]    Installing headers
    [INFO ]  Installing C library headers: done in 14.44s (at 05:53)
    [INFO ]  =================================================================
    [INFO ]  Installing static core C compiler
    [EXTRA]    Configuring static core C compiler
    [EXTRA]    Building static core C compiler
    [EXTRA]    Installing static core C compiler
    [INFO ]  Installing static core C compiler: done in 261.93s (at 10:15)
    [INFO ]  =================================================================
    [INFO ]  Installing C library
    [EXTRA]    Copying sources to build dir
    [EXTRA]    Applying configuration
    [EXTRA]    Building C library
    [EXTRA]    Installing C library
    [INFO ]  Installing C library: done in 124.42s (at 12:19)
    [INFO ]  =================================================================
    [INFO ]  Installing final compiler
    [EXTRA]    Configuring final compiler
    [EXTRA]    Building final compiler
    [EXTRA]    Installing final compiler
    [INFO ]  Installing final compiler: done in 206.61s (at 15:46)
    [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 161.86s (at 18:28)
    [INFO ]  =================================================================
    [INFO ]  Installing dmalloc
    [EXTRA]    Configuring dmalloc
    [EXTRA]    Building dmalloc
    [EXTRA]    Installing dmalloc
    [INFO ]  Installing dmalloc: done in 15.66s (at 18:43)
    [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 1.99s (at 18:45)
    [INFO ]  =================================================================
    [INFO ]  Installing cross-gdb
    [EXTRA]    Configuring cross-gdb
    [EXTRA]    Building cross-gdb
    [EXTRA]    Installing cross-gdb
    [INFO ]  Installing cross-gdb: done in 340.12s (at 24:25)
    [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
    [EXTRA]    Cleaning up ncurses
    [INFO ]  Installing native gdb: done in 439.59s (at 31:45)
    [INFO ]  =================================================================
    [INFO ]  Installing gdbserver
    [EXTRA]    Configuring gdbserver
    [EXTRA]    Building gdbserver
    [EXTRA]    Installing gdbserver
    [INFO ]  Installing gdbserver: done in 15.48s (at 32:01)
    [INFO ]  =================================================================
    [INFO ]  Installing strace
    [EXTRA]    Configuring strace
    [EXTRA]    Building strace
    [EXTRA]    Installing strace
    [INFO ]  Installing strace: done in 24.32s (at 32:25)
    [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.28s (at 32:27)
    [INFO ]  Build completed at 20110801.161742
    [INFO ]  (elapsed: 32:27.21)
    [INFO ]  Finishing installation (may take a few seconds)...
    [32:27] / [root@localhost crosstool-ng-1.9.3]#


    9.
    进入x-tools/powerpc-unknown-linux-uclibc/
    创建link.sh脚本文件,然后执行该脚本
    ####link.sh####
    #!/bin/sh

    DEFAULT_PREFIX=powerpc-unknown-linux-uclibc-
    CROSS_PREFIX=powerpc-linux-
    BINUTILS="addr2line ar as c++ c++filt cc cpp ct-ng.config embedspu
              g++ gcc gcc-4.2.4 gccbug gcov gdb gdbtui gfortran gprof
              ld ldd nm objcopy objdump populate ranlib readelf run size
              strings strip"

    #BINUTILS="addr2line ar"

    echo create dir link
    ln -s powerpc-unknown-linux-uclibc powerpc-linux

    cd bin/
    for i in $BINUTILS
    do
     src_name=$DEFAULT_PREFIX$i
     des_name=$CROSS_PREFIX$i
     /bin/rm -f $des_name
     echo create soft link: $des_name link to $src_name
     ln -s $src_name $des_name
    done
    #######

    10.打包交叉编译工具链
    进入x-tools/powerpc-unknown-linux-uclibc/
    tar -cjvf powerpc-unknown-linux-uclibc.tar.bz2 powerpc-unknown-linux-uclibc/

    11.错误记录

    [INFO ]  =================================================================
    [INFO ]  Installing static core C compiler
    [EXTRA]    Configuring static core C compiler
    [ERROR]    configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+.
    [ERROR]    Build failed in step 'Installing static core C compiler'
    [ERROR]    Error happened in '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/build/cc/gcc.sh' at line # 203 in function 'do_cc_core'
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/build/cc/gcc.sh' at line # 74 in function 'do_cc_core_pass_2'
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/crosstool-NG.sh' at line # 597 in function 'main'
    [ERROR]    Look at '/root/x-tools/powerpc-unknown-linux-uclibc/build.log' for more info on this error.
    [ERROR]  (elapsed: 6:39.85)
    [06:40] / make: *** [build] Error 1

    [INFO ]  Installing static core C compiler
    [EXTRA]    Configuring static core C compiler
    [EXTRA]    Building static core C compiler
    [ERROR]    make[1]: *** [configure-gcc] Error 1
    [ERROR]    Build failed in step 'Installing static core C compiler'
    [ERROR]    Error happened in '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/build/cc/gcc.sh' at line # 289 in function 'do_cc_core'
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/build/cc/gcc.sh' at line # 76 in function 'do_cc_core_pass_2'
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/crosstool-NG.sh' at line # 597 in function 'main'
    [ERROR]    Look at '/root/x-tools/powerpc-unknown-linux-uclibc/build.log' for more info on this error.
    [ERROR]  (elapsed: 3:41.27)
    [03:42] / make: *** [build] Error 2

    [DEBUG]    ==> Executing: 'autoreconf'
    [ALL  ]    configure.in:27: require Automake 1.10.1, but have 1.10
    [ALL  ]    autoreconf: automake failed with exit status: 1
    [ERROR]    Build failed in step 'Extracting and patching toolchain components'
    [ERROR]    Error happened in '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/build/companion_libs/mpfr.sh' at line # 36 in function 'do_mpfr_extract'
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/crosstool-NG.sh' at line # 559 in function 'main'
    [ERROR]    Look at '/opt/powerpc/crosstool-ng-1.9.3/x-tools/powerpc-unknown-linux-uclibc/build.log' for more info on this error.
    [ERROR]  (elapsed: 1:20.97)

    [INFO ]  =================================================================
    [INFO ]  Installing final compiler
    [EXTRA]    Configuring final compiler
    [EXTRA]    Building final compiler
    [ERROR]    checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile
    [ERROR]    make[2]: *** [configure-target-libstdc++-v3] Error 1
    [ERROR]    make[1]: *** [all] Error 2
    [ERROR]    Build failed in step 'Installing final compiler'
    [ERROR]    Error happened in '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/build/cc/gcc.sh' at line # 470 in function 'do_cc'
    [ERROR]          called from '/opt/powerpc/install_dir//lib/ct-ng-1.9.3/scripts/crosstool-NG.sh' at line # 597 in function 'main'
    [ERROR]    Look at '/opt/powerpc/crosstool-ng-1.9.3/x-tools/powerpc-unknown-linux-uclibc/build.log' for more info on this error.
    [ERROR]  (elapsed: 22:48.43)
    [22:49] / make: *** [build] Error 2

  • 相关阅读:
    2.7连接数据库中遇见的相应问题1
    linux bash中too many arguments问题的解决方法
    linux系统补丁更新 yum命令
    安装node,linux升级gcc
    python-导出Jenkins任务
    升级openssl和openssh版本
    linux修改文件所属的用户组以及用户
    linux的Umask 为022 和027 都是什么意思?
    keepalived
    自己编写k8s
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/4464072.html
Copyright © 2011-2022 走看看