免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 978 | 回复: 0
打印 上一主题 下一主题

在Ubuntu 8.10下编译 arm-linux-gcc 4.1.1 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-06 12:24 |只看该作者 |倒序浏览

                                                                                                               
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP