如何制作arm-linux-gcc编译工具

如何制作arm-linux-gcc编译工具,第1张

一、下载源文件
源代码文件及其版本:
binutils-219tarbz2, gcc-core-444tarbz2 gcc-g++-444tarbz2 Glibc-27tarbz2 Glibc-ports-27tarbz2 Gmp-42tarbz2 mpfr-240tarbz2mpc-101targz Linux-2625tarbz2 (由于我在编译出错的过程中,根据出错的信息修改了相关的C代码,故而没有下载相应的补丁)
一般一个完整的交叉编译器涉及到多个软件,主要包括bilinguals、cc、glibc等。其中,binutils主要生成一些辅助工具;gcc是用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具,而glibc主要提供用户程序所需要的一些基本函数库。
二、建立工作目录
编译所用主机型号 fc14i686,虚拟机选的是VM70,Linux发行版选的是Fedora9,
第一次编译时用的是root用户(第二次用一般用户yyz), 所有的工作目录都在/home/yyz/cross下面建立完成,首先在/home/yyz目录下建立cross目录,然后进入工作目录,查看当前目录。命令如下:
创建工具链文件夹:
[root@localhost cross]# mkdir embedded-toolchains
下面在此文件夹下建立如下几个目录:
setup-dir:存放下载的压缩包;
src-dir:存放binutils、gcc、glibc解压之后的源文件;
Kernel:存放内核文件,对内核的配置和编译工作也在此完成;
build-dir :编译src-dir下面的源文件,这是GNU推荐的源文件目录与编译目录分离的做法;
tool-chain:交叉编译工具链的安装位;
program:存放编写程序;
doc:说明文档和脚本文件;
下面建立目录,并拷贝源文件。
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
拷贝源文件:
这里我们采用直接拷贝源文件的方法,首先应该修改setup-dir的权限
[root@localhost embedded- toolchains] #chmod 777 setup-dir
然后直接拷贝/home/yyz目录下的源文件到setup-dir目录中,如下图:
建立编译目录:
[root@localhost setup-dir] #cd /build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
三、输出环境变量
输出如下的环境变量方便我们编译。
为简化 *** 作过程。下面就建立shell命令脚本environment-variables:
[root@localhost build -dir] #cd /doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
用编辑器vi编辑环境变量脚本envionment-variables:[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
截图如下:
执行如下语句使环境变量生效:
[root@localhost scripts]# source /environment-variables
四、建立二进制工具(binutils)
下面将分步介绍安装binutils-2191的过程。
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf /setup-dir/binutils-2191tarbz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
创建Makefile:
[root@localhost build-binutils] #//src-dir/binutils-2191/configure --target=$TARGET --prefix=$PREFIX
在build-binutils目录下面生成Makefile文件,然后执行make,make install,此过程比较缓慢,大约需要一个15分钟左右。完成后可以在$PREFIX/bin下面看到我们的新的binutil。
输入如下命令
[root@localhost build-binutils]#ls $PREFIX/bin

修改$QTDIR/mkspecs目录下的符号链接default将其指向linux-g++
$QTDIR是路径,具体要看你把QT装到什么地方和QT本身的版本,一般是/usr/lib[64]/qt4
修改default符号链接的作用是让qmake在生成Makefile的时候将Makefile文件中的编译器变量$CC与$CXX赋值成gcc和g++

eabi标准的要好些,可能arm-linux-gcc就是arm-none-linux-gnueabi的一个链接
终于,郁闷已久的问题攻破了,用了三种配置交叉编译的方法,最终在开发板上实现成功了,现在想一想,有的时候真的也是运气。
之前已经试验过使用arm-linux-gcc-341配置交叉编译编译环境,配置成功了,在开发板上失败了~
后来使用脚本创建交叉编译环境(crosstool-043),配置成功了(这个用了相当长的时间),在开发板上失败了~

首先,你先要考虑自己打算做一个什么样的板,是为了完成某个项目,还是做个学习用的板。明确目的后,开始设计原理图。目前我们常用的ARM开发板多是三星的,也有PHILIPS的。这两大类芯片在网上可以找到很丰富的资源,包括原理图和测试程序,尤其是44B0的芯片,资料几乎是满网飞了。找一个芯片的原理图,在其基础上做些改动,使之更适合自己的实际应用。 ARM7的芯片使用起来会稍微简单些,毕竟其原理构造和普通的51单片机有些类似,不需要太费事就可以完成。 对于ARM9的,设计原理图会比较麻烦。建议采用核心板的方式,把ARM芯片和存储器放在一个小板上,然后再做底板,这样即使设计出了问题,也方便重新修改设计。

推荐
linux嵌入式教程视频
42-如何编写嵌入式Linux的设备驱动(一)
43-如何编写嵌入式Linux的设备驱动(二)
44-如何编写嵌入式Linux的设备驱动(三)

其实楼主的问题很专业,之前我在周立功那边也了解过不少。\x0d\ 当用户需要EasyARM-iMX283在开机启动后就运行指定的应用程序或指令时,可以通过vi命令编辑/etc/rcd/initd/start_userapp,将要执行的指令添加到里面。若用户有一个hellow的程序放在/home/目录中,那么设置hellow程序开机启动的方法如程序清单 11红色部分所示。\x0d\程序清单11 用户启动文件\x0d\#!/bin/sh \x0d\#you can add your app start_command three \x0d\/home/hellow \x0d\#start qt command,you can delete it 下面是启动QT界面的指令,若用户不需要启动QT,可以直接删除\x0d\export TSLIB_PLUGINDIR=/usrb/ts/ \x0d\export TSLIB_CONFFILE=/etc/tsconf \x0d\export TSLIB_TSDEVICE=/dev/input/ts0 \x0d\export TSLIB_CALIBFILE=/etc/pointercal \x0d\export QT_QWS_FONTDIR=/usrb/fonts\x0d\export QWS_MOUSE_PROTO=Tslib:/dev/input/ts0 \x0d\/usr/zhiyuan/zylauncher/start_zylauncher &\x0d\\x0d\如果程序是一个阻塞程序(程序被运行后不会退出或返回),则可能会导致位于其后的指令或程序无法得到执行,并且始终占用串口终端,造成其他程序(比如Shell)无法通过串口终端与用户交互。对于此类应用程序,可以在其后面添加“ &”(注意:是“空格”+“&”符号)让其在后台运行,如下所示:\x0d\/home/hellow &


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13389493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存