x86_64 arm制linux-gcc,arm-linux-gcc 制作
序言:其实,如果没有充裕的时间,交叉编译器完全不用自己建,网上下载直接拿来用就可以了。
之所以写这博客,一是为了和大家交流,二是为了防止由于时间的流逝再也找不到当初的笔记。人说好记星不如烂笔头,但是对于我们这些飘在上海居无定所的人来说,好记性不如写博客,频繁的搬迁可以让你找不到当初的笔记本,但是博客还是存在的。
第一步:下载必要的文件,我下载的文件如下:
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 制作相关推荐
- linux csh 安装,linux安装gcc的shell脚本
原标题:linux安装gcc的shell脚本 GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,它能把易于人类使用的高级语言编写的源代码构建成计算机能 ...
- 【教程】制作能在ARM板上直接运行的gcc本地编译器
编译好的程序的下载链接:百度网盘 请输入提取码(提取码:ocmm) 概述 通常情况下,我们是在电脑里面开一个Linux虚拟机, 在虚拟机里面用交叉编译工具链编译好可执行文件后,将可执行文件拷贝到板子里 ...
- 【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 ...
- 荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc
首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...
- arm-linux-gcc 裸机程序,Linux下ARM裸机开发-交叉工具链
初识linux下ARM的裸机开发全过程.现在总结如下: 首先说明为什么要学习裸机开发,一方面bootloader的编写要用到裸机开发的知识,另一方面就是驱动的开发.一般情况下我们进行的系统上的开发. ...
- ARM实验板移植,linux点阵字库的使用
不说原理,只讲步骤.包括所有自用包以及实验中遇到问题的解决办法. 想知道HZK16原理的直接搜关键词:HZK16汉字16*16点阵字库的使用 XMware:(14条消息) 小白如何在window电脑上 ...
- embedded linux arm,Embedded+Linux+For+Arm.ppt
<Embedded+Linux+For+Arm.ppt>由会员分享,可在线阅读,更多相关<Embedded+Linux+For+Arm.ppt(16页珍藏版)>请在人人文库网上 ...
- Linux安装arm交叉编译器
Linux安装arm交叉编译器 总结一下Linux(本文是基于Ubuntu16.04 64位版)下arm交叉编译工具链的安装及配置步骤,按照此顺序可以避免很多不必要的错误. 注意:建议在执行以下所有命 ...
- 用QEMU模拟ARM开发板,搭建Linux kernel运行环境
前言 有的时候我们想调试linux kernel或者linux应用程序,但是又没有硬件环境,这个时候可以选择用模拟器的方法,模拟出一个硬件环境. Android emulator Android系统的 ...
- Linux下ARM汇编教程
转载:http://blog.csdn.net/denlee/article/details/2501182 第一部分 Linux下ARM汇编语法 尽管在Linux下使用C或C++编写程序很方便,但汇 ...
最新文章
- 2021年大数据Spark(四十六):Structured Streaming Operations 操作
- 脑洞大开!Adobe等新研究把「自拍」变「他拍」,魔幻修图效果感人
- linux user32.lib,USER32!__ClientLoadLibrary定位
- BE镜像还原系统过程
- 综合技术--maven的基本使用
- Java技术:实现pdf和Excel的生成及数据动态插入、导出
- jzoj3682-Points and Segments【模型转化,欧拉回路】
- Silverlight 写了一个2D仿3D的柱状图表
- wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!
- SQL 之连接查询
- 2021全国研究生数学建模竞赛C题思路
- Unity 数字跳动抽奖,且每次数字不重复!
- 工序模拟程序设计C语言设计,B版:毕业设计基于51单片机的C语言程序设计实训100例B4.1(备份存档)...
- Java完全自学手册,一册在手,offer我有(附程序员书单)
- VNN结合金蝶Kis9.1专业版Sp1的应用及解决方案
- python字典类型中键可以是数字吗_python字典key不能是或可以是啥类型
- 零基础Linux搭建虚拟专用网络(实现游戏局域网联机)
- dell t320 raid linux,Dell T320服务器阵列卡驱动下载
- 用python做题——PythonChallenge-1
- 软件测试中7个看透不说透的真理
热门文章
- 算法复习第四章动态规划
- Python计算校验文件的MD5、SHA1、SHA256和CRC32,获取文件创建日期、修改日期和文件大小
- Qt QtCreator 所有版本官方下载地址
- CentOS7 安装 NextCloud
- CentOS7 搭建Kafka消息队列环境,以及Python3操作Kafka Demo
- 子网掩码与子网个数、主机地址个数的关系
- java的math类_Java之Math类使用小结
- c 语言 abs 库函数,absread,abswirte - C 语言库函数手册
- python关键字的意思_python 关键字(Keywords)
- 安卓开发文档_鸿蒙2.0,HarmonyOS开发体验!