- 论坛徽章:
- 0
|
1. 下载crosstool-0.43.tar.gz
【crosstool-0.43.tar.gz】
http://kegel.com/crosstool/crosstool-0.43.tar.gz
2. 配置 crosstool-0.43
[xxxx@ ctools]$ echo $HOME
/home/xxxx
[xxxx@ ctools]$ mkdir download crosstool-4.1.1
[xxxx@ ctools]$ tar zxvf crosstool-0.43.tar.gz
[xxxx@ ctools]$ cd crosstool-0.43
[color="#0000ff"][xxxx@ crosstool-0.43]$ vi demo-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
[color="#ff0000"]TARBALLS_DIR=/home/xxxx/download
RESULT_TOP=/home/xxxx/crosstool-4.1.1
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-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest
[color="#ff0000"]eval `cat arm.dat gcc-4.1.1-glibc-2.3.2.dat` sh all.sh --notest
echo Done.
[color="#0000ff"][xxxx@ crosstool-0.43]$ vi gcc-4.1.1-glibc-2.3.2.dat
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
[color="#ff0000"]LINUX_DIR=linux-2.6.25
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
GDB_DIR=gdb-6.5
[color="#0000ff"][xxxx@ crosstool-0.43]$ vi arm.dat
KERNELCONFIG=`pwd`/arm.config
[color="#ff0000"]TARGET=arm-linux
TARGET_CFLAGS="-O"
[xxxx@ crosstool-0.43]$ ./demo-arm.sh
【说明】红色部分为修改/增加部分
TARBALLS_DIR:是下载的工具源码压缩包的存放目录。
RESULT_TOP :是要生成的工具链的存放目录,要有写权限的目录,不然无法编译。
3. 系统将开始编译
所有使用到的文件(缺少的文件)会在编译的时候来下载:
binutils-2.16.1
gcc-3.3.6
gcc-4.1.1
glibc-2.3.2
linux-2.6.25
linux-libc-headers-2.6.12.0
glibc-linuxthreads-2.3.2
gdb-6.5
这个工程很长需要n小时的时间来编译。
下载过程可能比较慢你可将提到的源文件先下载放到/home/xxxx/download目录下。
下载地址如下:
【binutils-2.16.1.tar.bz2】
http://ftp.gnu.org/gnu/binutils/
【glibc-2.3.2.tar.bz2】
http://ftp.gnu.org/gnu/glibc/
【glibc-linuxthreads-2.3.2.tar.bz2】
http://ftp.gnu.org/gnu/glibc/
【linux-2.6.25.tar.bz2】
http://ftp.kernel.org/pub/linux/kernel/v2.6/
【gdb-6.5.tar.bz2】
http://ftp.gnu.org/gnu/gdb/
【gcc-4.1.1.tar.bz2】
http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/
【gcc-3.3.6.tar.bz2】
http://ftp.gnu.org/gnu/gcc/gcc-3.3.6/
以上就是编译交叉编译工具所用到的源文件组合,这个组合可以成功编译,关于那些组合可以成功编译可以参照
http://kegel.com/crosstool/crosstool-0.43/buildlogs/
表格。
1)我在ubuntu 8.10下,按照步骤做,因为只能用非root用户操作,执行过程中出现很多问题,改都改怕了。然后我就把提示不能用root用户的命令注释,用root来编译。过程如下:
cd crosstool-0.43
sudo vi all.sh
注释掉这几行,如下
#case x$USER in
#xroot) abort "Don't run all.sh or crosstool.sh as root, it's dangerous" ;;
#*) ;;
#esac
2)当然了,编译之前要安装这几个包,bison flex m4,这个容易,解决如下:
sudo apt-get install bison
sudo apt-get install flex
m4在装flex时因为依赖关系自动安装
3)编译过程中出现一个问题,说是gcc版本太旧,其实是gcc版本太新了,解决如下:
sudo apt-get install gcc-3.4
cd /usr/bin
sudo rm gcc
ln -s gcc-3.4 gcc
4)还有个错误,如下:
/home/xxs/crosstool-0.43/build/arm-arm9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:1:1: missing terminating " character
系统在编译生成version.o时候发现version-info.h文件有错误,解决方法:
解压glibc-2.3.2.tar.bz2
找到glibc-2.3.2/csu目录下的Makefile按如下修改
文件末尾有2处echo
echo
"\"Compiled on a $$os $$version system" \
"on
`date +%Y-%m-%d`.\\n\"" ;; \
改为:
echo
"\"Compiled on a $$os $$version system" \
"on
`date +%Y-%m-%d`.\\\\n\"" ;; \
echo
"\"Available extensions:\\n\"";
改为:
echo
"\"Available extensions:\\\\n\"" \
保存并重新压缩为glibc-2.3.2.tar.bz2 覆盖原来downloads目录下的glibc-2.3.2.tar.bz2,转到crosstool-0.43目录下从新执行
由此,编译过程顺利了
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91092/showart_1853517.html |
|