之前构建了在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/
我的环境:
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
等明天我把它上传,共享起来。
我按照楼主的方法做也遇到了unknown command `colophon’和unknown command `cygnus’这个问题,但是我的binutils是最新版2.24-5ubuntu3-uptodate,还是报这个错误
系统是ubuntukylin-14.04-desktop-amd64
不知道楼主能否请教下~
这个问题我也遇到了,你google:binutils下载最新的tat.gz包.不是ubuntu自带的
请问楼主是如何进行替换binutils的。使用apt-get remove binutils 吗?
然后解压binutils-2.24.tar.gz 。
cd binutils-2.24
./configure
make
make install
谢谢了~~
我博客里面有下载链接,你下载后解压把文件夹放到你要编译的gcc工程的文件夹下覆盖掉原来的文件夹就好了
在这个博客看了很久也没找到个链接。去你的csdn博客也没有发现~能发现博主指明下个下载链接在哪里么,谢谢~~
你下载的arm gcc源码里面也是有binutils包的,替换掉就是了
复制到浏览器ftp.gnu.org/pub/gnu/binutils/
我按照你给的地址下载了个binutils-2.24.tar.gz,解压后有个binutils-2.24文件夹,该把这个文件夹放到哪里呢?这个不需要编译吗?如何需要./configure后面该加什么参数啊?谢谢~
博主要按照你的方法弄完后, 没有看到哪里有那个错误提示(不是在编译完成后最下面么?), 但是结束后在install-native里面也没有任何东西. 请教下这是什么情况? 另外博主说:”明天把它上传上来,共享起来”..请博主给个编译过的支持64位的gcc工具链的链接, 谢谢
之前忘了传了,我整理下就上传
多谢。我之后又编译了下,能编译出来工具链了,但还是出了问题,但在我用eclipse初步调试时,Jlink还是能控制板子的,目前还不知道我调试错的地方会在什么时候出错~哈
sudo apt-get install lib32z1
即可解决问题,不需要编译重新64位版本。
就是不想系统装32位的库才写这篇博客的