arm linux gcc下载,linux交叉编译
大家好,今天来为大家分享arm linux gcc下载的一些知识点,和linux交叉编译的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
怎么安装arm-linux-gcc4.8
CrossBuild很蛋疼的,以目标内核2.6.x为例,我们需要以下基本包:
binutils-2.23.1.tar.bz2
gcc-4.8.2.tar.bz2
glibc-2.18.tar.bz2
glibc-linuxthreads-2.5.tar.bz2
gdb-7.6.1.tar.bz2
linux-2.6.34.14.tar.xz
mpfr-3.1.2.tar.bz2
mpc-1.0.1.tar.gz
gmp-5.1.3.tar.bz2
因为编译过程很费时,你要在bash配置文件中直接声明环境变量:
vim~/.bashrc
export TARGET=arm-linux-gnueabi
export PREFIX=/usr/local/arm/4.8.2
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PATH:$PREFIX/bin
#source~/.bashrc
以便下次工作继续恢复现场。
工具链创建:
先来安装mpfr、mpc、gmp。#号表示在root下工作。
#tar-xjf gmp-5.1.3.tar.bz2&&cd gmp-5.1.3
#mkdir build&& cd build&&\
../configure--prefix=/usr/local/gmp--build=x86_64-linux-gnu&&\
make&& make install
OK,gmp done,Next,搞搞mpfr:
#tar-xjvf mpfr-3.1.2.tar.bz2&& cd mpfr-3.1.2
#../configure--build=x86_64-linux-gnu--prefix=/usr/local/mpfr--with-gmp=/usr/local/gmp&&\
make&&make install
OK, mpfr done, Next we build mpc:
#tar-xzvf mpc-1.0.1.tar.gz&& cd mpc-1.0.1
mkdir build&& cd build
#../configure--build=x86_64-linux-gnu--prefix=/usr/local/mpc--with-gmp=/usr/local/gmp--with-mpfr=/usr/local/mpfr&&\
make&&make install
After, we need to copy linux-kernel-headers:
xz-d linux-2.6.34.14.tar.xz
tar-xvf linux-2.6.34.14.tar
cd linux-2.6.34.14
make menuconfig
这里我们不作任何个性,直接保存退出。
#make include/linux/version.h
#mkdir-p$TARGET_PREFIX/include
#cp-r./include/linux/$TARGET_PREFIX/include
#cp-r./include/asm-generic/$TARGET_PREFIX/include
#cp-r./arch/arm/include/asm/$TARGET_PREFIX/include
然后编译binutils:
#tar-xjvf binutils-2.23.1.tar.bz2
#cd binutils-2.23.1
#mkdir build&& cd build
#../configure--prefix=$PREFIX--target=$TARGET
#make
#make install
$TARGET得到一大堆工具,我就不一一介绍了。
接下来为ARM平台编译不带链接库的原初编译器,这一步称作恐龙蛋生小鸡。
解开tar-xjvf gcc-4.8.2.tar.bz2,并把mpfr-3.1.2.tar.bz2、mpc-1.0.1.tar.gz、gmp-5.1.3.tar.bz2也解开,去掉版本号放到gcc源目录下。
先删除 gcc下上述几个包,如果存在的话:
rm-rf mpfr-3.1.2 mpc-1.0.1 gmp-5.1.3
然后解包,并移入gcc下:
#tar-xjvf gmp-5.1.3.tar.bz2
#mv gmp-5.1.3 gmp
#mv./gmp./gcc-4.8.2
#tar-xjvf mpfr-3.1.2.tar.bz2
#mv mpfr-3.1.2 mpfr
#mv./mpfr./gcc-4.8.2
#tar-xzvf mpc-1.0.1.tar.gz
#mv mpc-1.0.1 mpc
#mv./mpc./gcc-4.8.2
可以编译gcc了:
#cd gcc-4.8.2
#mkdir build&& cd build
#../configure--prefix=$PREFIX--target=$TARGET--without-headers--enable-languages=c--disable-threads--with-newlib--disable-shared--disable-libmudflap--disable-libssp--disable-decimal-float&&\
make all-gcc&& make install-gcc&& make all-target-libgcc&&\
make install-target-libgcc
如果没出错的话,这里的预编译就快搞好了,擦把汗先。
#tar-xvf glibc-2.18.tar.xz
#tar-xvf glibc-linuxthreads-2.5.tar.bz2--directory=./glibc-2.18
# cd glibc-2.18
# mkdir build
# cd build
# CC=$TARGET-gcc
#export CFLAGS="-g-O2-march=arm"
# ln-s/usr/local/arm/4.8.2/lib/gcc/arm-linux-gnueabi/4.8.2/libgcc.a/usr/local/arm/4.8.2/lib/gcc/arm-linux-gnueabi/4.8.2/libgcc_eh.a
这里编译好的glibc就是for arm的glibc了。
创建config.cache配置文件
# vim config.cache
libc_cv_forced_unwind=yes
libc_cv_c_cleanup=yes
libc_cv_arm_tls=yes
#../configure--host=$TARGET--target=$TARGET--prefix=$TARGET_PREFIX--enable-add-ons--disable-profile--cache-file=config.cache--with-binutils=$PREFIX/bin--with-headers=$TARGET_PREFIX/include
#make all
#make install
预编译环境搭好,我擦已经下班了,明天继续。
好了,为正式开始 arm铸刀:
# cd gcc-4.8.2/build/
# rm-rf*
#../configure--prefix=$PREFIX--target=$TARGET--enable-shared--enable-languages=c,c++
# make
# make install
这就是arm版的gcc了
编译gdb
# tar-xvf gdb-7.6.1.tar.bz2
# make
# make install
创建链接
# cd$PREFIX/bin
# ln-s arm-linux-gnueabi-addr2line arm-linux-addr2line
# ln-s arm-linux-gnueabi-ar arm-linux-ar
# ln-s arm-linux-gnueabi-as arm-linux-as
# ln-s arm-linux-gnueabi-c++ arm-linux-c++
# ln-s arm-linux-gnueabi-c++filt arm-linux-c++filt
# ln-s arm-linux-gnueabi-cpp arm-linux-cpp
# ln-s arm-linux-gnueabi-elfedit arm-linux-elfedit
# ln-s arm-linux-gnueabi-g++ arm-linux-g++
# ln-s arm-linux-gnueabi-gcc arm-linux-gcc
# ln-s arm-linux-gnueabi-gcc-4.6.3 arm-linux-gcc-4.6.3
# ln-s arm-linux-gnueabi-gcov arm-linux-gcov
# ln-s arm-linux-gnueabi-gdb arm-linux-gdb
# ln-s arm-linux-gnueabi-gdbtui arm-linux-gdbtui
# ln-s arm-linux-gnueabi-gprof arm-linux-gprof
# ln-s arm-linux-gnueabi-ld arm-linux-ld
# ln-s arm-linux-gnueabi-ld.bfd arm-linux-ld.bfd
# ln-s arm-linux-gnueabi-nm arm-linux-nm
# ln-s arm-linux-gnueabi-objcopy arm-linux-objcopy
# ln-s arm-linux-gnueabi-objdump arm-linux-objdump
# ln-s arm-linux-gnueabi-ranlib arm-linux-ranlib
# ln-s arm-linux-gnueabi-readelf arm-linux-readelf
# ln-s arm-linux-gnueabi-run arm-linux-run
# ln-s arm-linux-gnueabi-size arm-linux-size
# ln-s arm-linux-gnueabi-strings arm-linux-strings
# ln-s arm-linux-gnueabi-strip arm-linux-strip
这把可以杀人了,开始为你树莓派编译软件吧。
如何安装arm-linux-gcc
1,下载并安装arm-linux-gcc
arm-linux-gcc-4.2.1的版本在这里可以下载,最新版arm-linux-tools-20080623.tar.gz这个可能是4.2.4的版本,因为下面有编译4.2.4的方法还有相应的代码包,build-arm-linux-4.2.14,此版本由于过大,我没有下载。
下面的这个是ARM官方给的下载链接,然后将HOST选择为IA32 GNU/Linux,点击下载就可以了。不过前缀为arm-2010.09-51-arm-none-eabi-i686-pc-linux-gnu而不是arm-linux-。。。
在友善之臂官方网站下载arm-linux-gcc4.4.3。
2,删除之前安装有旧版本,执行
[root@localhost~]# rm-rf/opt/arm
3,对新版本arm-linux-gcc-4.4.3进行解压(注意,如果我们加上了-C,那么就会自动解压到/usr/local/arm/这个目录下),但是友善之臂按照下列方式解压,不会解压到/usr/local/arm/目录下的,这是因为友善之臂把/usr/local/arm/目录修改成了/opt/FriendlyARM/toolschain/,除非自己在把它修改过来
[root@localhost~]# tar-ivxzf/smbroot/arm-linux-gcc-4.4.3.tar.gz-C/
4,修改配置文件,将arm-linux-gcc添加到环境变量中,因为arm-linux-gcc的命令是在/usr/local/arm/4.4.3/bin下,其目的通过对全局变量绑定使之能够在任意一个目录下能够执行该命令。
打开设置文件
[root@localhost opt]# vi/etc/profile
在打开的文件的
# Path manipulation
if ["$EUID"="0" ]; then
pathmunge/sbin
pathmunge/usr/sbin
pathmunge/usr/local/sbin
pathmunge/usr/local/arm/4.4.3/bin
fi
或者在文件末尾添加
export PATH=$PATH:/usr/local/arm/4.4.3/bin
保存退出
5,立即使新的环境变量生效,不用重启电脑
[root@localhost opt]# source/etc/profile
[root@localhost opt]#
6,检查是否将路径加入到PATH:
[root@localhost opt]# echo$PATH
显示的内容中有/usr/local/arm/4.4.3/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
7,测试是否安装成功
首先,执行find命令查询一下arm-linux-gcc的位置
[root@localhost~]# find/-name arm-linux-gcc
/opt/arm/toolschain/4.4.3/bin/arm-linux-gcc
[root@localhost~]#
可以看到arm-linux-gcc的位置与环境变量中设定的路径一致
接下来查询arm-linux-gcc的版本
[root@localhost bin]# arm-linux-gcc-v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with:/opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure--build=i386-build_redhat-linux-gnu--host=i386-build_redhat-linux-gnu--target=arm-none-linux-gnueabi--prefix=/opt/FriendlyARM/toolschain/4.4.3--with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--enable-languages=c,c++--disable-multilib--with-arch=armv4t--with-cpu=arm920t--with-tune=arm920t--with-float=soft--with-pkgversion=ctng-1.6.1--disable-sjlj-exceptions--enable-__cxa_atexit--with-gmp=/opt/FriendlyARM/toolschain/4.4.3--with-mpfr=/opt/FriendlyARM/toolschain/4.4.3--with-ppl=/opt/FriendlyARM/toolschain/4.4.3--with-cloog=/opt/FriendlyARM/toolschain/4.4.3--with-mpc=/opt/FriendlyARM/toolschain/4.4.3--with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--disable-nls--enable-threads=posix--enable-symvers=gnu--enable-c99--enable-long-long--enable-target-optspace
Thread model: posix
gcc version 4.4.3(ctng-1.6.1)
[root@localhost bin]#
可以看到arm-linux-gcc的版本号,至此,arm-linu-gcc已成功安装。
arm-linux-gcc4.4.3怎么安装
1,下载并安装arm-linux-gcc
arm-linux-gcc-4.2.1的版本在这里可以下载,最新版arm-linux-tools-20080623.tar.gz这个可能是4.2.4的版本,因为下面有编译4.2.4的方法还有相应的代码包,build-arm-linux-4.2.14,此版本由于过大,我没有下载。
下面的这个是ARM官方给的下载链接,然后将HOST选择为IA32 GNU/Linux,点击下载就可以了。不过前缀为arm-2010.09-51-arm-none-eabi-i686-pc-linux-gnu而不是arm-linux-。。。
在友善之臂官方网站下载arm-linux-gcc4.4.3。
2,删除之前安装有旧版本,执行
[root@localhost~]# rm-rf/opt/arm
3,对新版本arm-linux-gcc-4.4.3进行解压(注意,如果我们加上了-C,那么就会自动解压到/usr/local/arm/这个目录下),但是友善之臂按照下列方式解压,不会解压到/usr/local/arm/目录下的,这是因为友善之臂把/usr/local/arm/目录修改成了/opt/FriendlyARM/toolschain/,除非自己在把它修改过来
[root@localhost~]# tar-ivxzf/smbroot/arm-linux-gcc-4.4.3.tar.gz-C/
4,修改配置文件,将arm-linux-gcc添加到环境变量中,因为arm-linux-gcc的命令是在/usr/local/arm/4.4.3/bin下,其目的通过对全局变量绑定使之能够在任意一个目录下能够执行该命令。
打开设置文件
[root@localhost opt]# vi/etc/profile
在打开的文件的
# Path manipulation
if ["$EUID"="0" ]; then
pathmunge/sbin
pathmunge/usr/sbin
pathmunge/usr/local/sbin
pathmunge/usr/local/arm/4.4.3/bin
fi
或者在文件末尾添加
export PATH=$PATH:/usr/local/arm/4.4.3/bin
保存退出
5,立即使新的环境变量生效,不用重启电脑
[root@localhost opt]# source/etc/profile
[root@localhost opt]#
6,检查是否将路径加入到PATH:
[root@localhost opt]# echo$PATH
显示的内容中有/usr/local/arm/4.4.3/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
7,测试是否安装成功
首先,执行find命令查询一下arm-linux-gcc的位置
[root@localhost~]# find/-name arm-linux-gcc
/opt/arm/toolschain/4.4.3/bin/arm-linux-gcc
[root@localhost~]#
可以看到arm-linux-gcc的位置与环境变量中设定的路径一致
接下来查询arm-linux-gcc的版本
[root@localhost bin]# arm-linux-gcc-v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with:/opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure--build=i386-build_redhat-linux-gnu--host=i386-build_redhat-linux-gnu--target=arm-none-linux-gnueabi--prefix=/opt/FriendlyARM/toolschain/4.4.3--with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--enable-languages=c,c++--disable-multilib--with-arch=armv4t--with-cpu=arm920t--with-tune=arm920t--with-float=soft--with-pkgversion=ctng-1.6.1--disable-sjlj-exceptions--enable-__cxa_atexit--with-gmp=/opt/FriendlyARM/toolschain/4.4.3--with-mpfr=/opt/FriendlyARM/toolschain/4.4.3--with-ppl=/opt/FriendlyARM/toolschain/4.4.3--with-cloog=/opt/FriendlyARM/toolschain/4.4.3--with-mpc=/opt/FriendlyARM/toolschain/4.4.3--with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--disable-nls--enable-threads=posix--enable-symvers=gnu--enable-c99--enable-long-long--enable-target-optspace
Thread model: posix
gcc version 4.4.3(ctng-1.6.1)
[root@localhost bin]#
可以看到arm-linux-gcc的版本号,至此,arm-linu-gcc已成功安装。