Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131419
  • 博文数量: 36
  • 博客积分: 2092
  • 博客等级: 大尉
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-04 17:33
文章分类
文章存档

2011年(18)

2010年(18)

我的朋友

分类: LINUX

2010-05-09 12:40:40

用开发板自带的arm-linux-gcc 来直接用.解压.设置PATH,重启机子即可.
arm-linux-gcc --version/-v
如上网下载一个arm-linux-3.3.2.tar.bz2 安装.
把编译通过的程序放到板子上运行即可.
用file 来测试它是什么文件类型.
$arm-linux-gcc helloworld.c -o helloworld
$file helloworld
helloworld: ELF 32-bit LSB executable, ARM, version 1,
dynamically linked (uses shared libs), not stripped
出现上面内容.证明交叉编译环境成功.
 

下用用cross来建立交叉编译环境.
制作之前确保你的机子上有如下几个工具:bison flex  build-essential。
用bison --version/v 来查看.在安装系统时,把软件开发全部安装,即可.
bison根据一系列规则来生成一个可以分析文本文件的结构的程序的程序,Bison 是一个替代 Yacc (Yet Another Compiler Compiler) 的语法分析程序生成器。
 
 如果已安装上面工具,好。
 也同时准备以下文件,提供下载(如不能下载,另到网上搜索):
【crosstool-0.43.tar.gz】
【binutils-2.16.1.tar.bz2】
【glibc-2.3.2.tar.bz2】
【glibc-linuxthreads-2.3.6.tar.bz2】
【linux-2.6.28.tar.bz2】
【gdb-6.5.tar.bz2】
【gcc-4.1.1.tar.bz2】
【gcc-3.3.6.tar.bz2】

如果用crosstools来自动下载过程可能比较慢你可将提到的源文件先下载放到/user/downloads目录下。

linux-2.6内核源代码是为了编译GCC和GLIBC时提供相关的头文件.
选择的内核版本最好与要移植到目标系统的内核一致.
 
现在开始交叉编译工作:
将crosstools工具解压:
tar -zxvf crosstool-0.43.tar.gz -C /
根目录里生成crosstool目录文件夹,进入:
cd crosstools-0.43
我的CPU 是S3C2440,则选用demo-arm9tdmi.sh
 
我的注意编写三个文件:1. demo-arm9tdmi.sh  2.gcc-gcc-4.1.1-glibc-2.3.2.dat  3.arm9tdmi.dat
 
1.我们进行编辑:vi demo-arm9tdmi.sh
#!/bin/sh
set -ex
TARBALLS_DIR=/user/downloads   # 定义工具链源码所存放位置。你可放到其它
目录
RESULT_TOP=/opt/crosstool            # 定义工具链的安装目录
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"                # 定义支持C, C++语言
export GCC_LANGUAGES

mkdir -p $RESULT_TOP                # 创建/opt/crosstool目录
 
eval 'cat arm9tdmi.dat gcc-4.1.1-glibc-2.3.2.dat'  sh all.sh --notest
--gdb                       # 编译工具链,该过程需要数小时完成。
echo Done.       
  
上面修改后进行保存。
 
2.下面,我们进行修改gcc-gcc-4.1.1-glibc-2.3.2.dat(它与demo-arm9tdmi.sh里
选的GCC版本)
BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.1
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.28
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2 GDB_DIR=gdb-6.5
 
3.再修改arm9tdmi.dat 文件:(可以不用修改)
#TARGET=arm-9tdmi-linux-gnu 改成:
TARGET=arm-linux   # 编译生成的工具链名称 这样,易记
 
修改后:wq!    #保存
 
下面,我们把下载好的文件移到: /user/downloads/ 目录下:
cp ****  /user/downloads/     #  ****表示下载好的文件.
接下来,修改crosstools的权限。这样,编译时就不会因为权限而出错。
chmod -R 777 /crosstool-0.43
最后一步,在crosstool-0.43目录下输入:  ./demo-arm9tdmi.sh 
 
看机器配置,比较好的可能二三个小时就搞的。^_^!
 
成功编译后,自动生成编译工具:/opt/crosstool/

接下来。我们修改环境变量:vi /etc/bashrc  在文件最后添加
export PATH=/opt/crosstool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-
gnu/bin:$PATH
 
保存。

重新启动后,打开一个终端,并输入命令arm-9tdmi-linux-gnu-gcc –v时输出了下面一串信息,说明交叉编译工具链制作成功。

进行测试:交叉编译工具下的TMP目录有个例子!
arm-$gcc -o hello hello.c 
file hello   #查看到是arm的文件.
 
交叉编译工具成功完成。
阅读(1171) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-05-16 08:10:01

在终端输入:source /etc/profile #使之立即生效,不需重新启动