Chinaunix首页 | 论坛 | 博客
  • 博客访问: 611717
  • 博文数量: 144
  • 博客积分: 5037
  • 博客等级: 大校
  • 技术积分: 1581
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-30 21:49
文章存档

2010年(16)

2009年(128)

分类: LINUX

2009-10-12 17:29:48

 

使用crosstool-0.43 在Linux环境下构建 MIPS 交叉编译器
最初步骤参见前面关于ARM的描述,这里主要解决在构建过程中遇到的错误。

编译选择的版本是: gcc-4.0.0-glibc-2.3.2.dat
其内容为:
BINUTILS_DIR=binutils-2.16.1
GCC_DIR=gcc-4.0.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
GCC_CORE_DIR=gcc-3.3.6

出现的错误:
1.编译过程中出现一个问题,说是gcc版本太旧,其实是gcc版本太新了,解决如下:
sudo apt-get install gcc-3.4
cd /usr/bin
sudo rm gcc
ln -s gcc-3.4 gcc
注意编译完成以后要恢复成原来的版本,如下:
cd /usr/bin
sudo rm gcc
ln -s gcc-4.3 gcc

2.Error: operation combines symbols in different segments
make[2]: *** [libgcc/./_divdi3.o] Error 1

具体解决方式为:
在binutils-2.16/gas/config/tc-mips.h
最后#endif 前面加上
#define UNDEFINED_DIFFERENCE_OK

在binutils-2.16/gas/expr.c
#ifdef DIFF_EXPR_OK
更换为
#if ((defined DIFF_EXPR_OK) || (defined TC_MIPS))
这样再编译就正常编译了。

3.出现如: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目录下从新执行。

 

转自http://blog.163.com/chenglian_999@126/blog/static/76000279200981041846584/


阅读(2636) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~