序言:其实,如果没有充裕的时间,交叉编译器完全不用自己建,网上下载直接拿来用就可以了。

之所以写这博客,一是为了和大家交流,二是为了防止由于时间的流逝再也找不到当初的笔记。人说好记星不如烂笔头,但是对于我们这些飘在上海居无定所的人来说,好记性不如写博客,频繁的搬迁可以让你找不到当初的笔记本,但是博客还是存在的。

第一步:下载必要的文件,我下载的文件如下:

Binutils 2.20,

GCC version 4.4.3,

Glibc 2.9,

Glibc-ports 2.9,

GMP version 4.3.2,

MPFR version 3.0.1:

第二部:为了方便打开两个终端,分别命名为T1和T2

在TI下输入如下命令:

export BUILDDIR=/home/zdl/build

export SRCDIR=/home/zdl/sources

export TARGETMACH=arm-none-linux-gnueabi

export BUILDMACH=x86_64-pc-linux-gnu

export INSTALLDIR=/home/zdl/arm

export SYSROOTDIR=/home/zdl/arm/sysroot

在T2输入如下命令:export BUILDDIR=/home/zdl/build

export SRCDIR=/home/zdl/sources

export TARGETMACH=arm-none-linux-gnueabi

export BUILDMACH=x86_64-pc-linux-gnu

export INSTALLDIR=/home/zdl/arm

export SYSROOTDIR=/home/zdl/arm/sysroot

export CROSS=arm-none-linux-gnueabi

export CC=${CROSS}-gcc

export LD=${CROSS}-ld

export AS=${CROSS}-as

第三步:在/home/zdl下建立三个文件夹 sources,build,arm

以下是T1的行为:

将下载的文件解压到sources目录

编译binutils:

mkdir $BUILDDIR/binutils

../../sources/binutils-2.20/configure --build=$BUILDMACH

--prefix=$INSTALLDIR --with-sysroot=$SYSROOTDIR

--target=$TARGETMACH

make

make

install

安装内核头文件:

cd $SRCDIR/linux-2.6.18

make mrproper

make ARCH=arm s3c2410_defconfig

make ARCH=arm headers_checkmake ARCH=arm

INSTALL_HDR_PATH=$INSTALLDIR/sysroot/usr headers_install

Bootstrap

GCC:

mkdir

$BUILDDIR/init-gcc

cd $BUILDDIR/init-gcc../../sources/gcc-4.4.3/configure

--build=$BUILDMACH --host=$BUILDMACH --target=$TARGETMACH

--prefix=$INSTALLDIR --without-headers --enable-bootstrap

--enable-languages=c --disable-threads --enable-__cxa_atexit

--disable-libmudflap --with-gnu-ld --with-gnu-as --disable-libssp

--disable-libgomp --disable-nls --disable-shared

make all-gcc

install-gcc

make all-target-libgcc

install-target-libgcc

ln -s

/home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc.a

/home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc_sh.a

为glibc建立头文件:

mkdir

$BUILDDIR/libc-header

cd $BUILDDIR/libc-header

echo "libc_cv_forced_unwind=yes" > config.cache

echo "libc_cv_c_cleanup=yes" » config.cache

export PATH=$INSTALLDIR/bin:$PATH

../../sources/glibc-2.9/configure --build=$BUILDMACH

--host=$TARGETMACH --prefix=$SYSROOTDIR/usr

--with-headers=$SYSROOTDIR/usr/include --config-cache

--enable-add-ons=glibc-ports-2.9,nptl

--enable-kernel=2.6.18

libc_cv_c_cleanup=yes

make -k install-headers cross_compiling=yes

install_root=$SYSROOTDIR

ln -s /home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc.a

/home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc_eh.

建立glibc:

mkdir $BUILDDIR/glibc

cd $BUILDDIR/glibc

echo "libc_cv_forced_unwind=yes" > config.cache

echo "libc_cv_c_cleanup=yes" » config.cache

../../sources/glibc-2.9/configure \--build=$BUILDMACH

--host=$TARGETMACH --prefix=/usr

--with-headers=$SYSROOTDIR/usr/include --config-cache

--enable-add-ons=glibc-ports-2.9,nptl --enable-kernel=2.6.18

make -k install-headers cross_compiling=yes

install_root=$SYSROOTDIR

make

make install_root=$SYSROOTDIR install

为ARM建立GCC:

mkdir $BUILDDIR/gcc

cd $BUILDDIR/gcc

echo "libc_cv_forced_unwind=yes" > config.cache

echo "libc_cv_c_cleanup=yes" » config.cache

export CC=gcc

../../sources/gcc-4.4.3/configure --build=$BUILDMACH

--target=$TARGETMACH --prefix=$INSTALLDIR

--with-sysroot=$SYSROOTDIR --enable-languages=c --with-gnu-as

--with-gnu-ld --disable-multilib --with-float=soft \

--disable-sjlj-exceptions --disable-nls --enable-threads=posix

--enable-long-longx libc_cv_c_cleanup=yes

make all-gccmake

install-gcc

以下是T2的行为:

mkdir $BUILDDIR/gmp

cd $BUILDDIR/gmp

export CFLAGS=-static

../../sources/gmp-4.4.3/configure --build=$BUILDMACH

--host=$TARGETMACH --prefix=$INSTALLDIR --disable-shared

make

make install

mkdir $BUILDDIR/mpfr

cd $BUILDDIR/mpfr

../../sources/mpfr-3.0.1/configure --build=$BUILDMACH

--host=$TARGETMACH --prefix=$INSTALLDIR

--with-gmp=$INSTALLDIR

makemake install

建立最终的gcc:

mkdir $BUILDDIR/gcc-final

cd $BUILDDIR/gcc-final

export CC=gcc

echo "libc_cv_forced_unwind=yes" > config.cache

echo "libc_cv_c_cleanup=yes" » config.cache

../../sources/gcc-4.4.3/configure --build=$BUILDMACH

--target=$TARGETMACH --prefix=$INSTALLDIR

--with-sysroot=$SYSROOTDIR --enable-languages=c --with-gnu-ld

--with-gnu-as --disable-multilib --with-float=soft \

--disable-sjlj-exceptions --disable-nls --enable-threads=posix

--disable-libmudflap --disable-libssp \

--enable-long=longx --with-shared --with-gmp=$INSTALLDIR

--with-mpfr=$INSTALLDIR

makem

make install

下边就是测试了

sudo gedit

/etc/bash.bashrc

添加如下:

export

PATH=$INSTALLDIR/bin:$PATH 当然$INSTALLDIR要用实际的地址代替

注销后重新登录,在终端输入:

arm-none-linux-gnueabi-gcc

-v

显示其编译信息

在编译一个helloworld.c试一下,都通过。

x86_64 arm制linux-gcc,arm-linux-gcc 制作相关推荐

  1. linux csh 安装,linux安装gcc的shell脚本

    原标题:linux安装gcc的shell脚本 GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,它能把易于人类使用的高级语言编写的源代码构建成计算机能 ...

  2. 【教程】制作能在ARM板上直接运行的gcc本地编译器

    编译好的程序的下载链接:百度网盘 请输入提取码(提取码:ocmm) 概述 通常情况下,我们是在电脑里面开一个Linux虚拟机, 在虚拟机里面用交叉编译工具链编译好可执行文件后,将可执行文件拷贝到板子里 ...

  3. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容...

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

  4. 荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc

    首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...

  5. arm-linux-gcc 裸机程序,Linux下ARM裸机开发-交叉工具链

    初识linux下ARM的裸机开发全过程.现在总结如下: 首先说明为什么要学习裸机开发,一方面bootloader的编写要用到裸机开发的知识,另一方面就是驱动的开发.一般情况下我们进行的系统上的开发. ...

  6. ARM实验板移植,linux点阵字库的使用

    不说原理,只讲步骤.包括所有自用包以及实验中遇到问题的解决办法. 想知道HZK16原理的直接搜关键词:HZK16汉字16*16点阵字库的使用 XMware:(14条消息) 小白如何在window电脑上 ...

  7. embedded linux arm,Embedded+Linux+For+Arm.ppt

    <Embedded+Linux+For+Arm.ppt>由会员分享,可在线阅读,更多相关<Embedded+Linux+For+Arm.ppt(16页珍藏版)>请在人人文库网上 ...

  8. Linux安装arm交叉编译器

    Linux安装arm交叉编译器 总结一下Linux(本文是基于Ubuntu16.04 64位版)下arm交叉编译工具链的安装及配置步骤,按照此顺序可以避免很多不必要的错误. 注意:建议在执行以下所有命 ...

  9. 用QEMU模拟ARM开发板,搭建Linux kernel运行环境

    前言 有的时候我们想调试linux kernel或者linux应用程序,但是又没有硬件环境,这个时候可以选择用模拟器的方法,模拟出一个硬件环境. Android emulator Android系统的 ...

  10. Linux下ARM汇编教程

    转载:http://blog.csdn.net/denlee/article/details/2501182 第一部分 Linux下ARM汇编语法 尽管在Linux下使用C或C++编写程序很方便,但汇 ...

最新文章

  1. 2021年大数据Spark(四十六):Structured Streaming Operations 操作
  2. 脑洞大开!Adobe等新研究把「自拍」变「他拍」,魔幻修图效果感人
  3. linux user32.lib,USER32!__ClientLoadLibrary定位
  4. BE镜像还原系统过程
  5. 综合技术--maven的基本使用
  6. Java技术:实现pdf和Excel的生成及数据动态插入、导出
  7. jzoj3682-Points and Segments【模型转化,欧拉回路】
  8. Silverlight 写了一个2D仿3D的柱状图表
  9. wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!
  10. SQL 之连接查询
  11. 2021全国研究生数学建模竞赛C题思路
  12. Unity 数字跳动抽奖,且每次数字不重复!
  13. 工序模拟程序设计C语言设计,B版:毕业设计基于51单片机的C语言程序设计实训100例B4.1(备份存档)...
  14. Java完全自学手册,一册在手,offer我有(附程序员书单)
  15. VNN结合金蝶Kis9.1专业版Sp1的应用及解决方案
  16. python字典类型中键可以是数字吗_python字典key不能是或可以是啥类型
  17. 零基础Linux搭建虚拟专用网络(实现游戏局域网联机)
  18. dell t320 raid linux,Dell T320服务器阵列卡驱动下载
  19. 用python做题——PythonChallenge-1
  20. 软件测试中7个看透不说透的真理

热门文章

  1. 算法复习第四章动态规划
  2. Python计算校验文件的MD5、SHA1、SHA256和CRC32,获取文件创建日期、修改日期和文件大小
  3. Qt QtCreator 所有版本官方下载地址
  4. CentOS7 安装 NextCloud
  5. CentOS7 搭建Kafka消息队列环境,以及Python3操作Kafka Demo
  6. 子网掩码与子网个数、主机地址个数的关系
  7. java的math类_Java之Math类使用小结
  8. c 语言 abs 库函数,absread,abswirte - C 语言库函数手册
  9. python关键字的意思_python 关键字(Keywords)
  10. 安卓开发文档_鸿蒙2.0,HarmonyOS开发体验!