编译交叉工具链powerpc-linux(干净的ubuntu)

本文在 http://blog.csdn.net/pulpdog/article/details/8023922 文章的基础上根据自己的实际情况(虚拟机中新安装的ubutun 16.04 LTS)做出的相应的修改。


1. 下载资源包

cd $HOME  
mkdir ppc      
cd ppc  
mkdir sources  
cd sources  

wget http://ftp.gnu.org/gnu/binutils/binutils-2.29.tar.bz2
wget http://ftp.gnu.org/gnu/glibc/glibc-2.26.tar.bz2  
wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.bz2  
wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2  
wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.2.1.tar.bz2  
wget ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2  
wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.5.tar.bz2 
wget http://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.bz2  
wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.bz2  
wget http://isl.gforge.inria.fr/isl-0.18.tar.bz2

mkdir ../tools  
export TARGET=powerpc-linux    
export TOOLS=~/ppc/tools  
export SOURCES=~/ppc/sources  
export PATH=$TOOLS/bin:$PATH   
export LANGUAGE=C    
export LC_ALL=C  

http://ftp.gnu.org/gnu/ 改为镜像地址 http://mirrors.ustc.edu.cn/gnu/ 下载速度更快。


2. 安装工具

注意 : tar vxf 命令可以加压任意后缀压缩包;安装过程中,configure 出现错误时可以查看 config.log 查明原因,如需要安装 m4、mpc 等库时,按如下命令编译。

../xxx/configure --prefix=/usr
make 
make install
2.1 linux 内核头文件(编译glibc使用)
cd $SOURCES  
tar jvxf linux-3.2.1.tar.bz2  

#把内核头文件安装到$TOOLS/$TARGET/usr/include中。  
make ARCH=powerpc INSTALL_HDR_PATH=$TOOLS/$TARGET/usr headers_install  

#安装后目录中的内容:  
ls -p $TOOLS/$TARGET/usr/include  
asm/  asm-generic/  drm/  linux/  mtd/  rdma/  scsi/  sound/  video/  xen  

2.2 交叉编译 binutils
cd $SOURCES  
tar jvxf binutils-2.29.tar.bz2  
mkdir binutils-build  
cd binutils-build  
../binutils-2.29/configure\  --prefix=$TOOLS \  --target=$TARGET 

make  
make install  
mkdir $TOOLS/include  

cp ../binutils-xxx/include/libiberty.h $TOOLS/include  

ls -p $TOOLS  
bin/  info/  lib/ man/  powerpc-linux/  share/  

2.3 交叉编译临时GCC
cd $SOURCES
tar jvxf gcc-6.1.0.tar.bz2  
mkdir gcc-bootstrap-build    
cd gcc-bootstrap-build  

../gcc-6.1.0/configure --target=$TARGET --prefix=$TOOLS --disable-nls --disable-shared --disable-multilib --disable-decimal-float --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --without-headers --with-newlib --enable-languages=c  

make all-gcc  
make all-target-libgcc  
make install-gcc  
make install-target-libgcc

2.4 交叉编译glibc

解压源码:

cd $SOURCES  
tar jvxf glibc-2.26.tar.bz2  
tar jvxf glibc-linuxthreads-2.5.tar.bz2 --directory=glibc-2.14  

修改源码中 Makeconfig 两行:

gnulib := -lgcc $(libgcc_eh) #libgcc_eh是用于处理C++异常的代码  
static-gnulib := -lgcc -lgcc_eh $(libunwind)  

为:

gnulib := -lgcc  
static-gnulib := -lgcc

编译及安装:

mkdir glibc-build  
cd glibc-build  

CC=$TOOLS/bin/${TARGET}-gcc   ../glibc-2.26/configure --prefix=/ --host=$TARGET --build=$(../glibc-2.26/scripts/config.guess) --with-headers=$TOOLS/$TARGET/usr/include/ --with-binutils=$TOOLS/$TARGET/bin\ --disable-profile libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes 

make  
make install_root=$TOOLS/$TARGET install  

修改以下两个连接脚本,不然在最后编译 gcc 时会报错找不到对应的库。
修改连接脚本: $TOOLS/$TARGET/lib/libc.so
GROUP ( //lib/libc.so.6 //lib/libc_nonshared.a )
改为:
GROUP ( libc.so.6 libc_nonshared.a )

修改连接脚本:$TOOLS/$TARGET/lib/libpthread.so
GROUP ( //lib/libpthread.so.0 //lib/libpthread_nonshared.a )
改为:
GROUP ( libpthread.so.0 libpthread_nonshared.a )


2.5 交叉编译GCC
cd $SOURCES  
mkdir gcc-full-build  
cd gcc-full-build

../gcc-6.1.0/configure --target=$TARGET --host=$(../gcc-6.1.0/config.guess) --prefix=$TOOLS --with-headers=$TOOLS/$TARGET/usr/include/ --enable-languages=c,c++ --disable-libgomp --disable-multilib  --disable-nls --enable-shared  

make all  
make install  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-小蛙-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值