用开发板自带的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) |