忘记密码   免费注册 查看新帖 | 论坛精华区
ChinaUnix.net
  平台论坛 博客 微博 读书 人才 精华 文库 自测 | 频道操作系统 开发 数据库 存储 服务器 网络 IT新闻 Linux 下载 Power用户组
最近访问板块 发新帖
查看: 1408 | 回复: 0

手把手教你在andlinux环境下用Crosstool构建ARM交叉编译工具 [复制链接]
更多

帖子
1
主题
1
精华
0
可用积分
1
专家积分
0
在线时间
1 小时
注册时间
2008-06-30
最后登录
2008-07-14
论坛徽章:
0
发表于 2008-06-30 13:39:41 |显示全部楼层
手把手教你在andlinux环境下用Crosstool构建ARM交叉编译工具:
http://www.needic.com.cn/icinf.asp?id=73


----------------------------以下是原文,那個網站實在太亂了,為方便大家瀏覽,我給轉貼過來了----------------------------

  andLinux 是一个基于 Ubuntu 的自由软件项目,其目的是让你不需要使用诸如 VMWare 之类的虚拟机就可以在 Windows 下运行 Linux,而且最有意思的是,你可以同时使用 Windows 和 Linux 而不需要像使用虚拟机那样来回切换!
文件下载及详细介绍请访问 andLinux 网站:http://www.andlinux.org/index.php.
用Crosstool可方便构建各种版本的交叉编译工具,在以下网址可获得最新的Crosstool: http://kegel.com/crosstool/


开始工作:

首先,下载安装andLinux在你的WINDOWS系统中,大多andLinux安装过程简单易懂,下载运行SETUP程序后回答些简单的询问后 "NEXT就 可以了,我的安装和大多数网上介绍的有一点不同是在询问:"How do you want to access your Windows file system from andLinux?"时我选择的是"using COFS",然后选一个你想用来和LINUX传递数据的文件夹,我觉得这样更简单.其他过程不再赘述.

andLinux安装后默认在任务栏有两个有用的工具:Konsole和KHomeFolder,前者可打开一个命令行窗口,后者可打开一个类似WINDOWS的窗口,对于习惯在WINDOWS下工作的人非常方便.

andLinux缺少以下必须的部分,我们给加上(你的电脑应该连在网上):
在Konsole窗口中分步输入(用户为root):
1:apt-get install bzip2
2:apt-get install patch
3:apt-get install bison
4:apt-get install flex

安装完后要建一个用户了(crosstool不允许在root安装)
adduser mask
在KHomeFolder窗口下可看到在home目录下为新用户新建了一个mask目录.
现在,下载最新的Crosstool(现在是crosstool-0.43.tar.gz)并放到mask目录下,在KHomeFolder中右键的属性中改其user和group都改为mask.
在Konsole窗口中切换到mask用户
[root@andLinux ~]#su mask
mask@andlinux:/root$

下面操作在用户mask下.

在mask目录下解压crosstool-0.43.tar.gz:
命令为:
tar -xvzf crosstool-0.43.tar.gz

解压后在mask下生成crosstool-0.43目录,我们可找到:demo-arm.sh文件
把它在同一目录下另存为arm.sh
其内容为:
  1. #!/bin/sh
  2. # This script has one line for each known working toolchain
  3. # for this architecture. Uncomment the one you want.
  4. # Generated by generate-demo.pl from buildlogs/all.dats.txt

  5. set -ex
  6. TARBALLS_DIR=$HOME/downloads #下载的软件包存放的地址
  7. RESULT_TOP=/opt/crosstool#交叉编译环境安装的地址
  8. export TARBALLS_DIR RESULT_TOP
  9. GCC_LANGUAGES="c,c++"
  10. export GCC_LANGUAGES

  11. # Really, you should do the mkdir before running this,
  12. # and chown /opt/crosstool to yourself so you don't need to run as root.
  13. Mkdir -p $RESULT_TOP

  14. #eval `cat arm.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest
  15. #eval `cat arm.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest
  16. #eval `cat arm.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest
  17. #eval `cat arm.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
  18. #eval `cat arm.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
  19. #eval `cat arm.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
  20. #eval `cat arm.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest
  21. #eval `cat arm.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
  22. #eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
  23. #eval `cat arm.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
  24. #eval `cat arm.dat gcc-3.4.5-glibc-2.2.2.dat` sh all.sh --notest
  25. #eval `cat arm.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
  26. #eval `cat arm.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
  27. #eval `cat arm.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
  28. #eval `cat arm.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
  29. #eval `cat arm.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest
  30. #eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
  31. #eval `cat arm.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest
  32. #eval `cat arm.dat gcc-4.0.2-glibc-2.2.2.dat` sh all.sh --notest
  33. #eval `cat arm.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
  34. #eval `cat arm.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
  35. #eval `cat arm.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
  36. #eval `cat arm.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest
  37. #eval `cat arm.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
  38. #eval `cat arm.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest
  39. #eval `cat arm.dat gcc-4.1.0-glibc-2.2.2.dat` sh all.sh --notest
  40. #eval `cat arm.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
  41. eval `cat arm.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest

  42. #这是我们要编译的交叉环境的版本

  43. echo Done.
复制代码

这里我没做任何改动

接下来看文件arm.dat内容,修改后为:

KERNELCONFIG=`pwd`/arm.config
TARGET=arm-linux #交叉编译软件的前缀,如arm-linux-gcc
TARGET_CFLAGS="-O"

下一步打开gcc-4.1.0-glibc-2.3.2-tls.dat:
内容如下:
  1. BINUTILS_DIR=binutils-2.16.1
  2. GCC_CORE_DIR=gcc-3.3.6
  3. GCC_DIR=gcc-4.1.0
  4. GLIBC_DIR=glibc-2.3.2
  5. LINUX_DIR=linux-2.6.15.4
  6. LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
  7. GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
  8. GDB_DIR=gdb-6.5
  9. GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread --enable-kernel=2.4.18"
复制代码


在mask目录下新建目录:downloads其user和group属性为mask
可下载gcc-4.1.0-glibc-2.3.2-tls.dat中提到的文件到downloads,不下也可以,crosstool会自动下,不过速度较慢.
我下的文件有(有些可能没用):
  1. binutils-2.16.1.tar.bz2
  2. gcc-3.3.6.tar.gz
  3. gcc-4.1.0.tar.bz2
  4. gdb-6.5.tar.bz2
  5. gdb-6.5.tar.gz
  6. glibc-2.3.2.tar.gz
  7. glibc-linuxthreads-2.3.2.tar.gz
  8. linux-2.6.15.4.tar.gz
  9. linux-libc-headers-2.6.12.0.tar.bz2
复制代码


准备工作快完成了

现在在根目录: opt下建目录: crosstool其user和group属性为mask,也就是mask用户可读写

现在可以执行arm.sh来编译交叉编译工具了.

执行如下命令
  1. mask@andlinux:~$ cd crosstool-0.43
  2. mask@andlinux:~/crosstool-0.43$ ./arm.sh
复制代码


几小时后(具体时间我不知道,睡觉去了),在 /opt/crosstool 下就生成了交叉编译工具.

最后添加环境变量:

在/ect/下找到文件:
  1. bash.bashrc
复制代码

在其最后添加:
  1. export PATH=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin:$PATH
复制代码

保存,重新启动andlinux

测试一下交叉编译工具

写一个简单的c程序test.c:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("hello,world!\n");
  5. return 0;
  6. }
复制代码


用以下命令编译:
  1. arm-linux-gcc -o test test.c
复制代码

然后:
  1. file test
复制代码

当显示:
  1. test: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.4.18, dynamically linked (uses shared libs), not stripped
复制代码


表明交叉编译工具正常.

[ 本帖最后由 bitmilong 于 2008-6-30 14:08 编辑 ]
您需要登录后才可以回帖 登录 | 注册

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP