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
这把可以杀人了,开始为你树莓派编译软件吧。
1.安装交叉编译环境 sudo apt-get install gcc g++ libcc1 libg++ make gdb2.安装交叉编译器 ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ 下载 cross -3.2.tar.bz2或者懒得去找干脆
wget ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ cross -3.2.tar.bz2
解压
sudo tar jxvf /home/zhaifang/cross -3.2.tar.bz2
sudo mv /home/zhaifang/usr/local/arm /usr/local
3.交叉编译器加入路径 sudo vi /etc/bash.bashrc后面加入
if [ -d /usr/local/arm ] then
PATH=/usr/local/arm/bin:"${PATH}"
fi
4.使环境生效 #source /etc/profile
5.检查 echo $PATH 出现/usr/local/arm/bin说明成功了
6.测试 arm-linux-gcc -v
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)