您的位置:首页 > 其它

使用crosstool构建arm交叉编译链遇到的问题汇总

2012-04-22 02:01 417 查看
下载制作交叉编译的工具:wget 
http://www.kegel.com/crosstool/crosstool-0.43.tar.gz

1、通过终端安装程序sudo apt-get install ***时出错:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

   出现这个问题可能是有另外一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,解决的办法其实很简单:
在终端中敲入以下两句
sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock

 

2、制作交叉编译工具链时发生的错误

(1)、以root用户执行./demo-arm-softfloat.sh,会发生以下错误。必须以普通用户执行。

+ case x$PREFIX in

+ case x$USER in

+ abort 'Don'\''t run all.sh or crosstool.sh as root, it'\''s dangerous'

+ echo 'Don'\''t' run all.sh or crosstool.sh as root, 'it'\''s' dangerous

Don't run all.sh or crosstool.sh as root, it's dangerous

+ exec false

  (2)、以普通用户执行./demo-arm-softfloat.sh时,过程中会发生权限限制问题,
以sudo mkdir代替。创建的目录或文件必须可读可写.

  (3)、. Upatch gcc-3.4.5.tar.gz时出错的问题

bzip2(stdin) is not a bzip2 file

tar:child returned status

      重新下载成gcc-3.4.5.tar.gz后解决。

  (4)、编译过程中出现如下问题:

configure: error:

*** These critical programs are missing or too old: as ld

*** Check the INSTALL file for required versions.

出现这种情况是因为Ubuntu默认所安装的binutils版本为binutils-2.20,当binutils太新的时候,crosstool只好将它当成太老的版本,报告说too
old; as ld. 于是我们需要重新编译安装一个老版本的binutils, 2.19或者2.18都可以被crosstool所识别,这里拿binutils-2.18举例。但还有一个问题,Ubuntu10.04默认安装的gcc版本是gcc-4.4.3,跟binutils-2.20一样,太高版本的gcc对语法要求更为严格,这样会导致binutils-2.18无法轻松的编译通过,于是我们需要编译安装一个老版本的gcc,
4.1的版本可以编译成功binutils-2.18.

解决办法:

下载binutils-2.18:http://ftp.gnu.org/gnu/binutils/ 

tar xvfj binutils-2.18

./configure --prefix=/home/david/share/tmp/binutils --disable-nls 

//一定要进到binutils2.8目录下执行这行命令。

//--prefix后面的是生成可执行文件存放的位置可以自己定义

Make all

      Make install      //如果这句不行,在执行这句前先make一下。

      cd /usr/bin

sudo rm as ld

sudo ln -sf /home/david/share/tmp/binutils/bin/ld ld

sudo ln -sf /home/david/share/tmp/binutils/bin/as as

ld –v   //如果看到版本号是2.18
就说明编译对了。

as –v

 

Binutils-2.18. Binutils
是一组开发工具,包括连接器、汇编器和其他用于目标文件和档案的工具。

(5)、VirtualBox
提示虚拟硬盘空间不足( Host system reported disk full.)

http://blog.csdn.net/ch_984326013/article/details/6704997

主要因为fat32只支持最大文件为4GB.

如何升级到NTFS:1.单击开始→运行
2.打开窗口以后,在光标的提示符下输入“convert X:/FS:NTFS”,然后回车。注意在“convert”的后面有一个空格。
3.接着系统会要求你输入X盘的卷标,然后回车。(卷标在“我的电脑”中点X盘,然后看它的属性可以找到。)(或者运行,输入cmd,在打开的工具中输入“vol”命令就可以看见c盘的卷标,如果想看其他的盘,例如D盘,则先输入d:,然后在输入vol
即可。)工作界面这样就可简单地转换分区格式为NTFS了。这个方法只用于FAT32转为NTFS,不能将NTFS转为FAT32。

(6)、如下问题:uses hardware FP, whereas u-boot uses software FP

    编译器不支持software FP.需要重新制作编译器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息