博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建arm-linux-gnueabi-gcc-4.6.3交叉编译链
阅读量:5165 次
发布时间:2019-06-13

本文共 4270 字,大约阅读时间需要 14 分钟。

一、准备工作

1、准备文件

binutils-2.22.tar.bz2

gcc-4.6.3.tar.bz2

glibc-2.14.1.tar.xz

glibc-ports-2.14.1.tar.gz

glibc-linuxthreads-2.5.tar.bz2

gdb-7.4.1.tar.bz2

linux-2.6.38.8.tar.bz2

mpfr-3.1.1.tar.bz2

mpc-1.0.1.tar.gz

gmp-5.1.0.tar.bz2

 

2、建立以下变量,方便稍候的输入

#vim ~/.bashrc

export TARGET=arm-linux-gnueabi

export PREFIX=/usr/local/arm-linux-gcc/4.6.3
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PATH:$PREFIX/bin

 

3、为宿主机安装mpfr、mpc、gmp

#tar -xvf gmp-5.1.0.tar.bz2

#cd gmp-5.1.0

#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

#tar -xvf mpfr-3.1.1.tar.bz2

# cd mpfr-3.1.1

#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

#tar -xvf mpc-1.0.1.tar.gz

#cd mpc-1.0.1

#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

4、复制linux-kernel-headers

#tar -xvf linux-2.6.38.8.tar.bz2

#cd linux-2.6.38.8

#make include/linux/version.h

  CHK     include/linux/version.h
  UPD     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 -xvf binutils-2.22.tar.bz2

#cd binutils-2.22

#mkdir build

#cd build

#../configure --prefix=$PREFIX --target=$TARGET

#make all -j4

#make install

 

三、初步编译gcc(不带glibc支持)

#tar -xvf gcc-4.6.3.tar.bz2

 

重新解压mpfr-3.1.1.tar.bz2、mpc-1.0.1.tar.gz、gmp-5.1.0.tar.bz2,并改名复制至gcc-4.6.3中

#rm -rf mpfr-3.1.1 mpc-1.0.1  gmp-5.1.0

 

#tar -xvf gmp-5.1.0.tar.bz2

#mv gmp-5.1.0 gmp

#mv ./gmp ./gcc-4.6.3

 

#tar -xvf mpfr-3.1.1.tar.bz2

#mv mpfr-3.1.1 mpfr

#mv ./mpfr ./gcc-4.6.3

 

#tar -xvf mpc-1.0.1.tar.gz

#mv mpc-1.0.1 mpc

#mv ./mpc ./gcc-4.6.3

 

#cd gcc-4.6.3

#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 -j4

#make install-gcc

#make all-target-libgcc -j4

#make install-target-libgcc

 

四、编译glibc

#tar -xvf glibc-2.14.1.tar.xz

#tar -xvf glibc-ports-2.14.1.tar.gz

#mv glibc-ports-2.14.1 ports

#mv ./ports/ ./glibc-2.14.1

#tar -xvf glibc-linuxthreads-2.5.tar.bz2 --directory=./glibc-2.14.1

 

# cd glibc-2.14.1

# mkdir build

# cd build

# CC=$TARGET-gcc

# ln -s /usr/local/arm-linux-gcc/4.6.3/lib/gcc/arm-linux-gnueabi/4.6.3/libgcc.a /usr/local/arm-linux-gcc/4.6.3/lib/gcc/arm-linux-gnueabi/4.6.3/libgcc_eh.a

 

创建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 -j4

#make install

 

五、重新编译gcc

# cd gcc-4.6.3/build/

# rm -rf *

# ../configure --prefix=$PREFIX --target=$TARGET --enable-shared --enable-languages=c,c++

# make all -j4

# make install

 

六、编译gdb

# tar -xvf gdb-7.4.1.tar.bz2 

# ../configure --prefix=$PREFIX --target=$TARGET

# make all -j4

# 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

 

完成

转载于:https://www.cnblogs.com/liu8620/archive/2013/01/24/2875383.html

你可能感兴趣的文章
一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符
查看>>
不同间距BGA的过孔及规则设置
查看>>
堆和栈
查看>>
92. Reverse Linked List II
查看>>
Team Dipper
查看>>
软件需求与分析需掌握的内容
查看>>
构造函数初始化列表
查看>>
jQuery获取自身HTML
查看>>
(转)RedHat/CentOS安装和配置kerberos
查看>>
File类常见方法:
查看>>
Revolving Digits(hdu 4333)
查看>>
在 Azure 中的 Linux 虚拟机上使用 SSL 证书保护 Web 服务器
查看>>
安卓 自定义吐司样式
查看>>
自定义动画
查看>>
准备些一篇目前技术目前公司 使用技术的 解析
查看>>
Sturct类型装箱时会遇到的问题
查看>>
mybatis 在自动生成时设置不生成Example类
查看>>
如何将红色区域数据调用解密函数直接打印到输出控制台(例如:crt控制台)...
查看>>
React-AR概述
查看>>
踏上Salesforce的学习之路(一)
查看>>