Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15239
  • 博文数量: 3
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-02 10:29
文章分类
文章存档

2009年(3)

我的朋友
最近访客

分类: LINUX

2009-12-15 23:16:12

1.软件包及软件版本的选择
 
    crosstool-0.43出来时间比较早,但去官网()看下也是最新的版本了,只能用其之。虽然crosstool久未更新,但其它的相关源码都在更新,如何选择匹配的代码版本就是一个问题了。
    我的做法是:解压缩crosstool-0.43.tar.gz后,在crosstool-0.43目录下浏览gcc-*.*.*-glibc-2.*.*(-tls).dat文件。选取一个自己觉得比较合适的打开,按照里面要的下载相应的软件包
    以gcc-4.1.0-glibc-2.3.2.dat为例:
    文件中列出的软件包有:
BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.0
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.15.4   #改为 LINUX_DIR=linux-2.6.32
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
GDB_DIR=gdb-6.5
 
其中,我只更换了linux内核包的版本,选取了最新的 linux-2.6.32.其它保持不变。
 
 
 
2.运行./arm.sh,出现Don't run all.sh or crosstool.sh as root, it's dangerous 错误!
 
不能在root下运行脚本。但是exit root后,又permission denied错误。这个错误可能是一开始自己的一些操作不对。但我开始的做法是all.sh脚本里,检查用户的部分去掉了,仍就以root身份运行。
 
3.文档没看仔细,以为将下载下来的软件包解压到downloads目录,其实,只要就压缩包放到里面就可以了。
 
 
4.预先安装bison、flex、patch、(m4)软件。
我用的是Ubuntu系统,前两个会直接提示,patch包会以下面的错误提示:
applying patch /home/ljd/downloads/crosstool-0.43/patches/glibc-2.3.2/arm-asm-clobber.patch
getandpatch.sh: 1: patch: not found
patch /home/ljd/downloads/crosstool-0.43/patches/glibc-2.3.2/arm-asm-clobber.patch failed
 
ubuntu下的安装方法root权限运行(前提是ubuntu能上网):
apt-get install bison
apt-get install flex
apt-get install patch
中间过程还会安装m4。
 
 
 
接下来的三个问题,正好看到网上有一个人(只他一个啊)和我碰到一样,要是自己解决一定会抓狂地把自己的心都掏了。
 
4.错误LOG
checking target system type... Invalid configuration `arm-linux-': system `' not recognized
configure: error: /bin/sh /home/toolchains/crosstool-0.43/build/arm-linux-/gcc-4.1.0-glibc-2.3.2/binutils-2.16.1/bfd/../config.sub arm-linux- failed
make: *** [configure-bfd] 错误
 
设错了:TARGET=arm-linux-  应该为:TARGET=arm-linux
 
 
 
5.GCC版本过新
 
如果gcc版本高于4.1版本,首先卸载掉gcc,使用命令如下:
     sudo apt-get remove gcc
因为过高的gcc版本会导致编译的时候出现这样的错误提示:
configure:error:
 
      ***These critical programs are missing or too old: gccY
 
      *** Check the INSTALL file for required versions.
再下载新的gcc版本
使用命令:
      sudo apt-get install gcc-4.1 g++ libgcc1 make gdb bison flex
然后使用
      ln -s /usr/bin/gcc-4.1 /usr/bin/gcc
建立连接,否则下载的gcc版本不能在使用gcc命令时候使用。
 
6.不知道的错误,幸好看到别人说了。
  编译再次出现了错误,内容如下:
In file included from version.c:33:
/home/davidchen/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/build-glibc/csu/version-info.h:1:1: missing terminating " character
/home/davidchen/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/build-glibc/csu/version-info.h:2:1: missing terminating " character
/home/davidchen/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/build-glibc/csu/version-info.h:3:1: missing terminating " character
/home/davidchen/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/build-glibc/csu/version-info.h:4:1: missing terminating " character
make[2]: *** [/home/davidchen/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/build-glibc/csu/version.o] 错误 1
make[2]:正在离开目录 /home/davidchen/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/glibc-2.3.2/csu'
make[1]: *** [csu/subdir_lib] 错误 2
make[1]:正在离开目录 ` /home/davidchen/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/glibc-2.3.2'
make: *** [all] 错误 2
原因是系统在编译生成version.o时候发现version-info.h文件有错误。version-info.h是由downloads目录下的glibc-2.3.2.tar.gz源文件解压后glibc-2.3.2/csu/目录下的Makefile执行后生成故错误可能发生在Makefile中。这个问题是由ubuntu8.04系统本身造成的。修改方法:解压glibc-2.3.2.tar.gz,找到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.gz覆盖原来downloads目录下的glibc-2.3.2.tar.gz,注意新建立的压缩文件是允许被程序直接执行的(右键单击选属性把允许被程序直接执行前面的框选上)。
参考网页: [url=][color=#0000ff][/color][/url] 改变$PATH变量:(1)在/etc/profile中添加PATH="$PATH:/yourpath" (2)在/home/youname/.bashrc中添加export PATH=”$PATH:/your path1/:/your path2/…..” 如果要使得计时生效,使用 source 命令:source .bashrc 注意:在修改了PATH值或任何环境变量后,都要用export将其输出,新的PATH值才能生效。
 
 
阅读(2493) | 评论(0) | 转发(0) |
0

上一篇:(转)构建ARM Linux交叉编译工具链 详解

下一篇:没有了

给主人留下些什么吧!~~