基于Linux x86_64系统编译arm-gcc-4.8: arm-none-eabi-gcc

之前构建了在Linux下进行stm32开发的环境,用的是arm-none-eabi-gcc这个编译器。最近重装了ubuntu,升级到了14.04,发现不能用这个gcc了,提示没有那个文件或目录。发现原来下的那个gcc竟然是32位的,而我的ubuntu是64位的,之前能用是因为在之前的系统装了lib32这个包,可以兼容32位软件。想再装一下这个包,发现已经不支持了。64位确实该成为主流了,可是还是有很多软件没跟上。就如这个arm-gcc,提供下载的只是32位。今天我就来编译一个64位下可以运行的arm-gcc.

个人原创,转载请注明原文出处,并保留原文链接:

http://www.embbnux.com/2014/04/28/compile_arm_gcc_for_linux_x86_64_amd64/

参考:  How-to-build-toolchain

我的环境:

UBUNTU 14.04 64

一 首先是下载gcc源码

https://launchpad.net/gcc-arm-embedded/+download

下载里面的src包解压;进入到src目录,把所有的压缩包再解压。

二 安装编译需要的工具:


sudo apt-get install apt-src gawk perl autoconf m4 automake
 sudo apt-get install libtool libncurses5-dev gettext gperf
 sudo apt-get install dejagnu expect tcl autogen guile-2.0-dev
 sudo apt-get install flex flip bison tofrodos texinfo g++ gcc-multilib
 sudo apt-get install libgmp3-dev libmpfr-dev debhelper texlive texlive-extra-utils
 # sudo apt-get install mingw-w64

最后那个mingw-w64是可以是编译处理的可执行文件为window下可运行的,即exe文件。如果gcc要用在window下就安装这个。

三  编译:


cd  gcc-arm-none-eabi-4_8-2014q1-20140314-src/src

cd zlib-1.2.5

patch -p1 <../zlib-1.2.5.patch

cd ../../

./build-prerequisites.sh  --skip_mingw32

./build-toolchain.sh --skip_mingw32

因为我们不是要编译到window下的,所有添加了参数–skip_mingw32

然后就是等待编译完成了。

这个我出现了几个错误:

【1】


src/binutils/bfd/doc/bfd.texinfo:325: unknown command `colophon'

binutils/bfd/doc/bfd.texinfo:336: unknown command `cygnus'

查了一下,这个binutils的bug,在最新版已经解决,果断下载最新的binutils包,替换就可以了。

【2】


Output written on libc.pdf (328 pages, 697165 bytes).
Transcript written on libc.log.
/usr/bin/texi2dvi: pdfetex exited with bad status, quitting.
make[4]: *** [libc.pdf] Error 1

这是无法生成pdf文件,应该是pdf太大了。这里我们并不需要pdf文档。所以用下面语句跳过:


./build-toolchain.sh --skip_mingw32 --skip_manual

等待编译完成后,我们需要的gcc,在install-native文件夹里面;这个就可以直接在64位系统上运行喽,不用再装lib32。是适合抛弃lib32了。哈哈,有源码就是好。

安装:

在.bashrc添加:
export PATH=$PATH:/yourdir/arm-none-eabi-embbnux/bin
注销后就可以用了:


arm-none-eabi-gcc -v

等明天我把它上传,共享起来。

 

《基于Linux x86_64系统编译arm-gcc-4.8: arm-none-eabi-gcc》有13个想法

  1. 我按照楼主的方法做也遇到了unknown command `colophon’和unknown command `cygnus’这个问题,但是我的binutils是最新版2.24-5ubuntu3-uptodate,还是报这个错误
    系统是ubuntukylin-14.04-desktop-amd64
    不知道楼主能否请教下~

      1. 请问楼主是如何进行替换binutils的。使用apt-get remove binutils 吗?
        然后解压binutils-2.24.tar.gz 。
        cd binutils-2.24
        ./configure
        make
        make install
        谢谢了~~

          1. 在这个博客看了很久也没找到个链接。去你的csdn博客也没有发现~能发现博主指明下个下载链接在哪里么,谢谢~~

          1. 我按照你给的地址下载了个binutils-2.24.tar.gz,解压后有个binutils-2.24文件夹,该把这个文件夹放到哪里呢?这个不需要编译吗?如何需要./configure后面该加什么参数啊?谢谢~

  2. 博主要按照你的方法弄完后, 没有看到哪里有那个错误提示(不是在编译完成后最下面么?), 但是结束后在install-native里面也没有任何东西. 请教下这是什么情况? 另外博主说:”明天把它上传上来,共享起来”..请博主给个编译过的支持64位的gcc工具链的链接, 谢谢

      1. 多谢。我之后又编译了下,能编译出来工具链了,但还是出了问题,但在我用eclipse初步调试时,Jlink还是能控制板子的,目前还不知道我调试错的地方会在什么时候出错~哈

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload the CAPTCHA.