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试一下,都通过。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

obs捕获窗口没有窗口_学习工具 | 视频录制软件OBS

小编今天为你们带来了一位新朋友,它就是:OBS了解OBSOBS是免费和开源软件的视频录制和实时流。在 Windows、Mac 或 Linux 上都能够快速轻松地下载并开始流式传输。小知识:流式传输:主要指通过网络传送流媒体(如视频、音频)的技术总…

linux webshell 页面管理,instantbox:30s内快速搭建可通过webshell管理的Linux系统

点击上方蓝色字体,关注我们如何快速搭建一个Linux环境,肯定非docker莫属。但通过instantbox,可以带给我们比docker更好的体验:在不到 30s 内快速搭建一个干净、开箱即用的多个临时的Linux 系统,如Ubuntu、Centos、Arch…

局域网共享工具_局域网文件共享

局域网文件共享的方式都有哪些?局域网文件共享的方式还是比较多的,有几种可参考操作: 在多台电脑上开启网上邻居共享,这样电脑直接打开网上邻居就可以访问对方的文件夹和资料了。 可以安装辅助软件,比如:坚…

linux重启was控制台报错,IHS启动时报错,从was控制台传播插件失败

IHS启动时报错,从was控制台传播插件失败集群IHSWAS,以前单独访问某一个节点http://ip:9080可以访问,最近无法访问(9080可以telnet通),通过日志发现,以下问题请各前辈帮帮忙IHS启动时报错: 版本6.1.0.31[Th…

sdp ddp内存怎么分_旗舰手机跑分66万+,缩短与PC差距,手机成生产力工具也许不是梦...

现在人们无论是在买电脑还是买手机的时候总是喜欢拿跑分来衡量产品的硬件性能,其实长时间的使用产品才是体验产品性能最真实的体验,但是往往需要先有机会拿到产品才行。除此之外也许跑分是最直观的手段。虽然跑分不代表最终体验,但是通过横向…

wave6000可以c语言编程吗,WAVE6000使用教程初步.doc

PAGEPAGE 12WAVE集成调试软件使用初步说明:本文档是对WAVE集成调试软件使用的初步说明,其中调试软件中有许多功能没有涉及,希望同学们通过使用进一步掌握。一、启动启动WAVE可以通过两种方式:(1)桌面上WAVE快捷方式。(2)安装目录下…

安卓虚拟机_安卓中的安卓虚拟机,那些闪退应用有救了

“我们坚持最优质的分享,努力做你身边的资源助手“VMOS VMOS堪称安卓中的安卓虚拟机,可以在手机里面再运行一个全新的安卓系统,由于是独立在运行的操作系统,可以运用的场景非常多,例如多开应用&#xf…

c语言表达式与变量区别,C语言实战开发————基础秘籍1(C与C++的区别,输入输出,函数,变量,运算符)...

(一)学前思考学习目标1 面试2 后期服务 :JNI(C语言)C JAVA 编程思想 编程能力(二)所学内容C语言与C的区别1.C是面向过程 C面向对象2.面向过程与面向对象最大的区别在于前者更直接,但后者略显含蓄,相较于前者而言,后者更为完善,正如…

电脑一开机出rebootand_北京联想电脑维修点【蓝伟博达笔记本维修吧】

联想笔记本电脑维修,多年从事联想笔记本的维修,我公司总结出联想leovo笔记本电脑常见故障,能准确快速判断出联想笔记本出现该故障的相应损坏部件,欢迎联想电脑维修 北京联想笔记本电脑主板维修。用户到店体验、免费检测、一对一维修服务、检测免费,修不好…

c语言用while和if颠倒整数,【连载】(循环执行语句while和if)乐创DIY C语言讲义​——3.8节(3)...

2 循环执行语句计算机有一个强大的能力,快速地重复执行某一计算,这种重复计算多次的方法,是通过软件中的循环执行语句去实现的。C语言中实现循环语句结构的方式有三种,第一种为“for”循环,第二种为“while”循环&…

怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...

请点击上方快速关注思域HATCHBACK很火。这款被誉为“国产Type R”的思域HATCHBACK版本在三厢车的基础上,集成了更运动化乃至更具战斗感的套件包围、中置排气和手动变速箱。对于本田粉、改装粉、操控粉们而言,“C位客信仰落地”的名言,就像是火…

安卓4.4.4安装哪个微信版本_??微信又更新!暗黑模式可独立设置,新增群接龙固定入口...

前段时间微信支持设置暗黑模式引起了大众的关注,但有小伙伴表示:为啥微信不能单独设置,要随系统变化?这下好了,微信安卓版发布7.0.15内测版本,私信「安卓内测版」即可获取。可以看到,本次内测更…

c语言中申请内存并初始化,c语言中结构体的定义、初始化及内存分配

#include struct person{char *name;int age;};int main(){//结构体可以定义在函数内,也可以定义到函数外//相当于全局变量与局部变量// struct person// {// char *name;// int age;// };struct person p1;//补齐算法,分配的存储空间为结构体中占用内存…

postgresql c语言,任意语言访问PostgreSQL:C语言接口

开源软件的一个好处是可以根据需要修改程序代码。如果程序后台使用PostgreSQL数据库,可以很容易用各种语言对其进行访问。本文作为系列文章的第一篇,会陆续介绍C、C、PHP、Tcl、Python及Perl等编程语言对PostgreSQL的访问方法。  需要说明的是&#xf…

某系统有6台输出设备 有多个进程均需要使用2台_系统设计硬核知识(4)——操作系统的设备管理...

在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备。它包括输入/输出设备,辅存设备及终端设备等。这些设备种类繁多,特性各异,操作方式的差异很大,从而使操作系统的设备管理变得十分繁杂…

esp8266单片机透传_基于WeMos D1(ESP8266)的校园卡门禁系统

刷卡https://www.zhihu.com/video/1107591334902345728电脑端控制https://www.zhihu.com/video/1107591363079733248手机端控制https://www.zhihu.com/video/1107591388040052736一、项目背景随着网络技术和嵌入式技术的发展,物联网开始引领新一波热潮。制作这个项目…

c语言调用android surface,Android GUI SurfaceFlinger

本文涉及的源代码基于 Android-7.1.1r。一、Android GUI 框架SurfaceFlinger 是 Android GUI 的核心,但是从 OpenGL_ES 的角度来看,它也只是个“应用程序”。Android 的显示系统大致框架图下图所示:GUI_STRUCT.png下面就“由下向上”来逐一分…

bat 取得服务列表_解读浩泽净水2018业绩:稳定增长背后的服务深化和科技跃进...

北京时间3月26日凌晨,苹果以一场没有任何硬件亮相的“软”发布会,宣告公司将向服务转型,欲以可持续的服务收入抵消iPhone遭遇的增长瓶颈。此举在大洋彼岸的中国引发了热烈反响。分析师们普遍认为苹果在“偷师”中国的BAT等互联网企业&#xf…

c语言实现多目标优化,MOPSO 多目标例子群优化算法

近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效。有代表性的多目标优化算法主要有NSGA、NSGA-II、SPEA、SPEA2、PAES和PESA等。粒子群优化(PSO)算法是一种模拟社会行为的、基于群体智能的进化技术&#xff0c…

软件工程结构化建模的方法和工具_软件工程导论知识点梳理之概念题

1. 软件的定义:软件是程序、数据及开发、使用和维护程序需要的所有文档的完整集合。例:在信息处理和计算机领域内,一般认为软件是程序、文档和数据。2.软件的分类:按照应用场景:系统/应用软件按照功能:服务…