- 空间积分
- 0
- 信誉积分
- 0
- UID
- 11734184
- 阅读权限
- 10
- 积分
- 1
- 帖子
- 1
- 精华
- 0
- 可用积分
- 1
- 专家积分
- 0
- 在线时间
- 1 小时
- 注册时间
- 2008-06-30
- 最后登录
- 2008-07-14
- 帖子
- 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
其内容为:
- #!/bin/sh
- # This script has one line for each known working toolchain
- # for this architecture. Uncomment the one you want.
- # Generated by generate-demo.pl from buildlogs/all.dats.txt
- set -ex
- TARBALLS_DIR=$HOME/downloads #下载的软件包存放的地址
- RESULT_TOP=/opt/crosstool#交叉编译环境安装的地址
- export TARBALLS_DIR RESULT_TOP
- GCC_LANGUAGES="c,c++"
- export GCC_LANGUAGES
- # Really, you should do the mkdir before running this,
- # and chown /opt/crosstool to yourself so you don't need to run as root.
- Mkdir -p $RESULT_TOP
- #eval `cat arm.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.2.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.0.2-glibc-2.2.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.1.0-glibc-2.2.2.dat` sh all.sh --notest
- #eval `cat arm.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
- eval `cat arm.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest
- #这是我们要编译的交叉环境的版本
- 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:
内容如下:
- BINUTILS_DIR=binutils-2.16.1
- GCC_CORE_DIR=gcc-3.3.6
- GCC_DIR=gcc-4.1.0
- GLIBC_DIR=glibc-2.3.2
- LINUX_DIR=linux-2.6.15.4
- LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
- GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
- GDB_DIR=gdb-6.5
- 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会自动下,不过速度较慢.
我下的文件有(有些可能没用):
- binutils-2.16.1.tar.bz2
- gcc-3.3.6.tar.gz
- gcc-4.1.0.tar.bz2
- gdb-6.5.tar.bz2
- gdb-6.5.tar.gz
- glibc-2.3.2.tar.gz
- glibc-linuxthreads-2.3.2.tar.gz
- linux-2.6.15.4.tar.gz
- linux-libc-headers-2.6.12.0.tar.bz2
复制代码
准备工作快完成了
现在在根目录: opt下建目录: crosstool其user和group属性为mask,也就是mask用户可读写
现在可以执行arm.sh来编译交叉编译工具了.
执行如下命令
- mask@andlinux:~$ cd crosstool-0.43
- mask@andlinux:~/crosstool-0.43$ ./arm.sh
复制代码
几小时后(具体时间我不知道,睡觉去了),在 /opt/crosstool 下就生成了交叉编译工具.
最后添加环境变量:
在/ect/下找到文件:
在其最后添加:
- export PATH=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin:$PATH
复制代码
保存,重新启动andlinux
测试一下交叉编译工具
写一个简单的c程序test.c:
- #include <stdio.h>
- int main()
- {
- printf("hello,world!\n");
- return 0;
- }
复制代码
用以下命令编译:
- arm-linux-gcc -o test test.c
复制代码
然后:
当显示:- 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 编辑 ] |
|