[原] 在 32bit openSuSE 上构建 GCC Cross Compiler for AArch64

 

转载请著明出处:http://www.cnblogs.com/shhuiw/


参考文档

        * http: // jk.ozlabs.org/docs/arm64-toolchain/
          http: // preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
          http: // www.tuicool.com/articles/YvQZfq
        * https: // gcc.gnu.org/wiki/InstallingGCC
          http: // gcc.gnu.org/install/prerequisites.html
          https: // gcc.gnu.org/install/configure.html
          https: // gcc.gnu.org/wiki/FAQ#configure
          http: // wiki.osdev.org/GCC_Cross-Compiler
        * http: // www.gnu.org/software/bihttp: // www.tuicool.com/articles/YvQZfqnutils/
        * http: // stackoverflow.com/questions/31392050/building-error-gcc-5-1-0-on-ubuntu
 

自己当前使用的是 32bit openSuSE,而现有的文章以及发行版提供的都是关于 64bit Linux 上的 cross toolchain 的。不打算重新装系统,毕竟要转移的资料太多。断断续续花了几天时间,参考网上各种资料,总算在 32bit openSuSE 上把 gcc cross compiler for AArch64 装上了。


设置安装目录
 

这里将安装目录设置为 /opt/cross/aarch64

        #  mkdir  -p /opt/cross/aarch64
        $ prefix=/opt/cross/aarch64/


安装 Prequisites


从源码编译 GCC,需要一些工具和库的支持( https://gcc.gnu.org/wiki/InstallingGCC #Support libraries ),这些库在不同发行版上打包名字不同。这里使用的是 openSuSE:
        # zypper  install  bison flex  gcc  gcc -c++ mpfr-devel mpc-devel gmp-devel texinfo 
Fedora 也是类似
如果是 Ubuntu/Debian,可以尝试:
        $  sudo  apt-get  install  bison flex  gcc  gcc -c++ libmpfr-dev libmpc-dev libgmp-dev texinfo
这里要安装 gcc-c++,是因为 make 时可能会报错:
        checking  for  int64_t underlying type...  long  long
        configure: error: error verifying int64_t uses  long  long
按照 http://stackoverflow.com/questions/31392050/building-error-gcc-5-1-0-on-ubuntu 中的方法安装 gcc-c++ 就可以解决了

 

构建安装 binutils

 

        $ git clone git: // sourceware.org/git/binutils-gdb.git
        $ cd binutils-gdb
        binutils-gdb]$ ./configure --prefix=$prefix --target=aarch64-none-linux --disable-multilib
        binutils-gdb]$  make
        binutils-gdb]#  make  install           //  这里是 root 操作 

 

安装 kernel headers

 

        $ git clone git: // git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        $ cd linux
        linux]#  make  ARCH=arm64 INSTALL_HDR_PATH=$prefix headers_install  //  这里是 root 操作


构建安装 GCC


注意,当前 GCC 的配置编译 不能在源码目录下直接进行https://gcc.gnu.org/wiki/FAQ#configure),否则可能报错:
        Makefile: 169 : ../.././ gcc /libgcc.mvars: No such  file  or directory
         make [ 2 ]: *** No rule to  make  target  ' ../.././gcc/libgcc.mvars ' .  Stop.
 

配置编译步骤如下:

        $ git clone git: // gcc.gnu.org/git/gcc.git 
        $  mkdir  gcc -build
        $ cd  gcc -build
         gcc -build]$ ../ gcc /configure --prefix=$prefix \
                        --target=aarch64-none-linux --enable-languages=c \
                        --disable-threads --disable-shared --disable-libmudflap \
                        --disable-libssp --disable-libgomp --disable-libquadmath \
                        --disable-libatomic
         gcc -build]$  make 
         gcc -build]#  make  install

    

如果配置编译过程中遇到问题,可以尝试一下稳定版本,比如 5.3
        $  wget  http: // www.netgull.com/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2
        $  tar  jxvf  gcc - 5.3 . 0 . tar .bz2
        $  mkdir  gcc - 5.3 -build
        $ cd  gcc - 5.3 -build/
         gcc - 5.3 -build]$ 
         gcc - 5.3 -build]$ 
         gcc - 5.3 -build]$ ../ gcc - 5.3 . 0 /configure --prefix=$prefix \
                        --target=aarch64-none-linux --enable-languages=c \
                        --disable-threads --disable-shared --disable-libmudflap \
                        --disable-libssp --disable-libgomp --disable-libquadmath \
                        --disable-libatomic
         gcc - 5.3 -build]$  make
         gcc - 5.3 -build]#  make  install

 

binutils/kernel-headers/gcc 编译安装完成后的目录布局


        #  tree -L  1  /opt/cross/aarch64/
        /opt/cross/aarch64/
        ├── aarch64-none-linux
        ├── bin
        ├── include
        ├── lib
        └── share
        directories,  0 files


        #  tree -L  2  /opt/cross/aarch64/
        /opt/cross/aarch64/
        ├── aarch64-none-linux
        │   ├── bin
        │   └── lib
        ├── bin
        │   ├── aarch64-none-linux-addr2line
        │   ├── aarch64-none-linux- ar
        │   ├── aarch64-none-linux-as
        │   ├── aarch64-none-linux-c++filt
        │   ├── aarch64-none-linux- cpp
        │   ├── aarch64-none-linux-elfedit
        │   ├── aarch64-none-linux- gcc
        │   ├── aarch64-none-linux- gcc - 6.0 . 0
        │   ├── aarch64-none-linux- gcc - ar
        │   ├── aarch64-none-linux- gcc -nm
        │   ├── aarch64-none-linux- gcc -ranlib
        │   ├── aarch64-none-linux-gcov
        │   ├── aarch64-none-linux-gcov-tool
        │   ├── aarch64-none-linux-gdb
        │   ├── aarch64-none-linux-gprof
        │   ├── aarch64-none-linux- ld
        │   ├── aarch64-none-linux- ld .bfd
        │   ├── aarch64-none-linux-nm
        │   ├── aarch64-none-linux-objcopy
        │   ├── aarch64-none-linux-objdump
        │   ├── aarch64-none-linux-ranlib
        │   ├── aarch64-none-linux-readelf
        │   ├── aarch64-none-linux-run
        │   ├── aarch64-none-linux-size
        │   ├── aarch64-none-linux-strings
        │   └── aarch64-none-linux-strip
        ├── include
        │   ├── asm
        │   ├── asm-generic
        │   ├── drm
        │   ├── gdb
        │   ├── linux
        │   ├── misc
        │   ├── mtd
        │   ├── rdma
        │   ├── scsi
        │   ├── sound
        │   ├── uapi
        │   ├── video
        │   └── xen
        ├── lib
        │   ├──  gcc
        │   ├── libaarch64-none-linux-sim.a
        │   ├── libcc1.la
        │   ├── libcc1.so -> libcc1.so. 0.0 . 0
        │   ├── libcc1.so. 0  -> libcc1.so. 0.0 . 0
        │   └── libcc1.so. 0.0 . 0
        └── share
            ├── gdb
            ├──  info
            ├── locale
            └──  man

         25  directories,  31  files


更新环境变量
 
        export PATH=$PATH:/opt/cross/aarch64/bin
这样就可以方便调用 aarch64-none-linux-*


 

posted on 2016-03-23 13:09  纠结中分裂 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/shhuiw/p/5310671.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值