ARM交叉编译链的制作.docx

上传人:工**** 文档编号:561505332 上传时间:2023-07-12 格式:DOCX 页数:10 大小:25.65KB
返回 下载 相关 举报
ARM交叉编译链的制作.docx_第1页
第1页 / 共10页
ARM交叉编译链的制作.docx_第2页
第2页 / 共10页
ARM交叉编译链的制作.docx_第3页
第3页 / 共10页
ARM交叉编译链的制作.docx_第4页
第4页 / 共10页
ARM交叉编译链的制作.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《ARM交叉编译链的制作.docx》由会员分享,可在线阅读,更多相关《ARM交叉编译链的制作.docx(10页珍藏版)》请在金锄头文库上搜索。

1、ARM交叉编译链的制作1. 直接下载已经编译好的文件。例如:http:/arm.linux.org.uk,这里提供已经编译好的cross,如cross-3.3.2.tar.bz2,cross-3.0.tar.bz2。直接下载某个包后解压,然后创建合适的链接或者输出环境变量即可调用。 这种做法操作很简单,但是不能根据自己的需求去定义,只能选择已经编译好的东西。2. 自己动手利用crosstool来制作。 A. 在CROSSTOOL官方网站下载源码包,解压,进入解压后的目录。 $sudo wget http:/ $sudo tar -xzvf crosstool-0.42.tar.gz $cd c

2、rosstool-0.42 B. 以ROOT建立目录,存放生成的交叉编译链 改变该目录的 所有者为普通用户 例如,存放生成的交叉编译链目录为/opt/crosstool,如下所示: sudo mkdir /opt/crosstool sudo chown $USER /opt/crosstool C. 修改针对目标板的脚本文件。 $sudo vi demo-arm.sh (1)这几个环境变量可以根据实际情况修改 TARBALLS_DIR=$HOME/downloads RESULT_TOP=/opt/crosstool export TARBALLS_DIR RESULT_TOP GCC_LA

3、NGUAGES=c,c+ export GCC_LANGUAGES (2)在若干行eval语句中选择要建立的交叉编译链的组合,去掉该行eval的#号。例如要做gcc为3.3.3,glibc为2.3.2的工具链 eval cat arm.dat gcc-3.4.5-glibc-2.3.6.dat sh all.sh -notest D. 修改目标板脚本文件demo-arm.sh中eval那一行出现的体系结构的配置文件 $sudo vi arm.dat KERNELCONFIG=pwd/arm.config TARGET=arm-unknown-linux-gnu TARGET_CFLAGS=-O

4、 可以修改TARGET变量为 TARGET=arm-S3C2410-linux-gnu(你的arm型号) E.修改目标板脚本文件demo-arm.sh中eval那一行出现的工具链的匹配文件 $sudo vi gcc-3.4.5-glibc-2.3.6.dat BINUTILS_DIR=binutils-2.15 GCC_DIR=gcc-3.3.3 GLIBC_DIR=glibc-2.3.2 LINUX_DIR=linux-2.4.26 GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2 以上变量要根据实际情况修改。不过 例如想下载linux2.6的版本

5、,并且下载gdb最新的版本。内核具体的版本要参照http:/kernel.org/和ftp:/ftp.gnu.org/pub/gnu/gdb。例如。 LINUX_DIR=linux-2.6.12.1 GDB_DIR=gdb-6.0 F.以普通用户运行脚本 $sudo sh demo-arm.sh 进入漫长的等待过程中3. 安装完成后路径设置和测试。 编辑/.bash_profile,在其中export PATH前加入这样一行, PATH=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-S3C2410-linux-gnu/bin:$PATH,改完后我的是这样的

6、# User specific environment and startup programs PATH=$PATH:$HOME/bin PATH=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-S3C2410-linux-gnu/bin:$PATH export PATH unset USERNAME 然后就好了。可以开始测试使用了。测试的方法很简单,随便找个程序源码编译一下就好了。这里用的这些编译器生成的是二进制文件,和平时的gcc生成的可执行文件并不相同。例如我测试时的文件是test.c, #include int main() printf(Hell

7、o!); return 0; 调用新的arm-linux-gcc来编译:arm-S3C2410-linux-gnu-gcc -o test test.c,这时生成的test文件是一个二进制的可执行文件,并不是我们平时常用的,所以在PC上执行这个文件的话是不行的,系统会提示:bash: ./test: cannot execute binary file。所以不能用这种方法来测试交叉编译是否成功。而应改采用file命令,例如我的是这样的: file test 结果如下: test: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/

8、Linux 2.4.3, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped 如果出现这样的结果说明交叉编译环境已经安装成功。否则重新想办法吧 第二种方法中,gcc,gdb等文件的下载方法有两种,一是设置好网络后让shell程序自己去下载,这种方法简单,但是下载速度不敢恭维。另外一种是自己使用下载工具去下载,然后将存放路径告诉demo-arm.sh,即 2.C里面的内容。这种方法速度让人满意。推荐使用。建立ARM交叉编译环境 (arm-none-linux-gnueabi-gcc with EABI)

9、2011-03-24 11:00昨天终于把交叉编译环境、移植内核和制作root文件系统在arm开发板上顺利跑通了。期间有的步骤很顺利,但更多的是被诸多问题困扰,比如最后一个不起眼的小问题导致文件系统无法加载,郁闷了我一个星期,最终通过分析慢慢发现了这个bug。还有各源码包版本的问题,而且网上很多介绍都是基于旧版本的。我这里全部用最新或较新的版本,当然,至于新旧版本到底哪个更好更合适,这是个智者见智的论题,不在本文讨论之列。我坚信很多人也遇到过或者即将遇到我曾经历过的错误和问题,因此我觉得把我过去两周做过的相关工作,详细地写下来,希望对大家有所帮助! 首先是平台和环境 ,我过去两周都是基于vmw

10、are 中ubuntu 10.04的,但是我发现ubuntu这个很火的桌面linux发行版本并不适合进行嵌入式开发,典型的麻烦就是系统缺少很多库、服务等等,需要自己手动安装,增加了不少额外的工作,和我以前用的SuSe 9比麻烦不少。不过所以现在我干脆全新装了一个SUSE 11.2 Enterprise Server 32bit,把过去的工作重复一遍,边编译边纪录,力求不遗漏细节! 过程预览:1,准备工作,包括下载源码包、补丁、建立文件夹和设置环境变量等2,建立内核头文件3,建立binutils4,建立bootstrap gcc5,建立glibc6,建立完整版本gcc7,测试hello worl

11、d 现在就让我们开始吧! 1 准备工作 我使用的源码包和补丁 如下:linux-2.6.34.tar.bz2binutils-2.20.tar.gzgcc-4.3.5.tar.bz2glibc-2.11.tar.gzglibc-linuxthreads-2.5.tar.bz2glibc-ports-2.11.tar.bz2glibc-2.11.2-gcc_fix-1.patch至于怎么得到这些源码包,找google吧! 建立工作目录 自己选一个合适的地方,建立一个总文件夹Embedded,并且在其下建立 build-tools、kernel和tools三个子文件夹、我们以后的操作就都在这里进行

12、了。$ mkdir Embedded$ cd Embedded$ mkdir build-tools kernel tool$ lsbuild-tools kernel tool 各文件夹作用如下:build-tools : 保存binutils、gcc 和 glibc的源代码和用来编译这些源代码的目录。kernel : 保存内核源代码和补丁。tools : 保存编译好的交叉编译工具和库文件。然后在build-tools文件夹中建立如下子文件夹:$ cd build-tools $ mkdir build-binutils build-boot-gcc build-glibc build-gc

13、c build-binutils :编译binutils的目录build-boot-gcc : 编译gcc 启动部分的目录build-glibc :编译glibc的目录build-gcc :编译完整gcc的目录 设置环境变量: 这里设置环境变量只是为了方便,因为每个工具的config都需要输入类似的变量,不如放在环境变量里。在命令行下打开vi /.bashrc,在文档最后输入下面几行,然后注销当前用户,重新登录export PRJROOT=/home/jinglelong/MySoftware/Embeddedexport TARGET=arm-none-linux-gnueabiexport PREFIX=$PRJROOT/toolsexport TARGET_PREFIX=$PREFIX/$TARGETexport PATH=$PREFIX/bin:$PATH各变量的具体意义如下:PRJROOT : 整个工程的根目录,这里当然是Embeded了TARGET : 目标文件对应的体系结构,arm-linux代表编译出来的target只能在arm体系结构中运行PREFIX

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号