|
在mingw下编译 arm-none-eabi-gcc5.1.0
Jeff Liang
此内容发布于阿莫电子论坛,其他转载请注明。
---------------------------------------------------------------------------------------
因为最近在看nuttx,编译的时候需要gcc,而keil MDK可以支持gcc编译器,网上看到的都是4.x的,遂自己编译下gcc5.1
需要gcc(4.x,5.x)编译linux内核的,我以前回复过一个帖子,可以参考。如有需要我可以开新贴发编译过程。
一、准备需要的源码包
binutils-2.25.tar.bz2
gcc-5.1.0.tar.bz2
newlib-2.2.0.20150423.tar.gz (自行改名为newlib-2.2.0.tar.gz)
gdb-7.9.1.tar.xz
gcc编译依赖mpc,mpfr,gmp
gmp-5.1.3.tar.xz
mpc-1.0.3.tar.gz
mpfr-3.1.2.tar.bz2
二、设置环境变量
所有的文件都放在了mingw的source文件夹下,下面的可以根据自己的需求调整
export TARGET=arm-none-eabi
export PREFIX=/mingw/arm-none-eabi-5.1.0/
export BIN_PATH=/mingw/arm-none-eabi-5.1.0/bin
三、解压缩有的文件(当前路径是/mingw/source)
tar vxf binutils-2.25.tar.bz2
tar vxf gcc-5.1.0.tar.bz2
tar vxf newlib-2.2.0.tar.gz
tar vxf mpc-1.0.3.tar.gz
tar vxf mpfr-3.1.2.tar.bz2
解压xz文件,然后再解压
xz -d *.xz
tar vxf gmp-5.1.3.tar
tar vxf gdb-7.9.1.tar
把newlib改名
mv newlib-2.2.0.20150423 newlib-2.2.0
gcc编译依赖mpc,mpfr,gmp,但是不用提前编译,只要移动mpc,mpfr,gmp到gcc目录即可
mv mpc-1.0.3 gcc-5.1.0/mpc
mv mpfr-3.1.2 gcc-5.1.0/mpfr
mv gmp-5.1.3 gcc-5.1.0/mpc
四、建立下面的文件夹
mkdir build-binutils
mkdir build-gcc
mkdir build-newlib
mkdir build-gdb
五、可能的错误和多线程编译
可能会提示找不到libiconv.la,这是个编译mingw的时候的错误,最近的更新后可能已经修复。
在提示出错的la文件中,修改为正确的libiconv.la的路径
# Libraries that this one depends upon.
# dependency_libs=' -L/mingw/lib /home/keith/staged/mingw32/lib/libiconv.la'
dependency_libs=' -L/mingw/lib'
make多线程编译的时候,比如make all -jX,X是根据自己CPU的情况确定,线程+核数目,我的i7(4核4线程)就设置为8
有时候会出现僵死的状况,结束掉make进程,然后单线程编译,来回切换
六、编译binutils
cd build-binutils
../binutils-2.25/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --enable-static --disable-shared --disable-nls
make all
make install
七、第一次编译gcc
这里的--with-pkgversion="nuttx arm 5.1.0"可以改为自己想设定的
编译过程中可能会提示内存不足错误,继续编译即可,我的laptop(8G内存)上提示了好几次
cd ../build-gcc
LD=-static ../gcc-5.1.0/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --disable-nls --disable-threads --with-gcc --with-gnu-as --with-gnu-ld --with-dwarf2 --disable-shared --disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-libgomp --with-newlib --with-headers=../newlib-2.2.0/newlib/libc/include/ --enable-languages="c,c++" --with-pkgversion="nuttx arm 5.1.0"
make all-gcc
make install-gcc
编译完后,把arm-none-eabi-gcc加入搜索路径,因为编译newlib需要
export PATH=$PATH:$BIN_PATH
八、编译newlib
cd ../build-newlib
CC_FOR_TARGET=arm-none-eabi-gcc ../newlib-2.2.0/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --with-newlib --enable-newlib-hw-fp --disable-nls
make all
make install
九、完整编译gcc
cd ../build-gcc
make all
make install
十、编译gdb
cd ../build-gdb
../gdb-7.9.1/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --with-python=no --enable-static --disable-shared
make all
make install
至此,所有的都编译完成了 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|