LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5770|回复: 4

快晕倒,cannot compute suffix of object files错误,看网上有挺多人遇到,但无解

[复制链接]
发表于 2009-2-4 05:40:24 | 显示全部楼层 |阅读模式
我在按照Cross-Compiled Linux From Scratch - Sysroot - Version SVN-0.0.1-20090131-ARM
制作tool chain
前面的过程还算顺利,但是到第一遍编译gcc-4.3.2的时候卡住了。
configure (参数照抄)可以通过。
但make执行了近10分钟的时候,出这个错误:
checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile

网上一查,不少人遇到,解决了的寥寥,仅有一个老兄遇到同样的问题,症状与我所说完全相同,解决了。但他的原因是根本没有先编译binutils。我这binutils编译已经正常通过了。

config.log显示,
在用xgcc进行测试的时候出错,Permission denied
测试用的命令是用xgcc编译一个临时文件。
手动模拟这个过程,得到同样的结果,Permission denied。
然后我按照上面说的那位老兄相同的方法,用strace跟踪,最后的几行让人大跌眼镜:
27770 execve("/usr/local/sbin/", ["", "-o", "/tmp/ccW5LwDQ.o", "/tmp/ccrqibTW.s"], [/* 23 vars */]) = -1 EACCES (Permission denied)
27770 execve("/usr/local/bin/", ["", "-o", "/tmp/ccW5LwDQ.o", "/tmp/ccrqibTW.s"], [/* 23 vars */]) = -1 EACCES (Permission denied)
27770 execve("/usr/sbin/", ["", "-o", "/tmp/ccW5LwDQ.o", "/tmp/ccrqibTW.s"], [/* 23 vars */]) = -1 EACCES (Permission denied)
27770 execve("/usr/bin/", ["", "-o", "/tmp/ccW5LwDQ.o", "/tmp/ccrqibTW.s"], [/* 23 vars */]) = -1 EACCES (Permission denied)

那位老兄就是在这发现的问题,他发现xgcc调用as,而他根本没有编译binutils,没有cross的as嘛。
不幸的是,我的问题是,不知xgcc怎么找as的,找到了一个空字符串,并且扔到execve里像模像样地执行,不deny才怪呢。

探索到此已经是我目前能力的极限了,没办法,初学不久,水平实在有限。
有哪位大牛,翻来覆去地(X)lfs过n遍的大牛,如果见过这种情况,知道何解,提点一二,不胜感激。祝您牛年 更像一头牛。
发表于 2009-2-4 14:29:36 | 显示全部楼层
支持你一下...高手给解答一下
我们也学习学习了!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-5 04:30:24 | 显示全部楼层
谢谢楼上兄弟,我厚着脸皮自问自答一下:

当时我看冲天飞豹大锅的clfs 2.0原理的时候,就有个疑问,LC_ALL到底是干啥用的?
没有弄清楚的前提下,自作主张地没有设置LC_ALL=POSIX,让我付出了一天时间的代价。
原书中这么写的
If the host system uses a version of Glibc older than 2.2.4, having LC_ALL  set to something other than “POSIX” or “C” (during this chapter) may cause issues if you exit the chroot environment and wish to return later. Setting LC_ALL to “POSIX” or “C” (the two are equivalent) ensures that everything will work as expected in the chroot environment.

而现在发现这个变量的影响远不止这些,我的编译失败就是它导致的。xgcc找as时,得到了一个空字符串,是本地化的字符编码导致的。
得到的经验教训是:做clfs要老实一点!呵呵……
回复 支持 反对

使用道具 举报

发表于 2009-3-12 12:18:34 | 显示全部楼层
"他的原因是根本没有先编译binutils。我这binutils编译已经正常通过了。
"

請問, 我要怎麼讓GCC 知道我新安裝了一個 binutils 在別的資料夾 ??
因為我的  gmp mpfr  binutils  與 gcc  都是安裝在我自己的資料夾, 我應該要怎麼在GCC configue時下參數 ??   

謝謝.
回复 支持 反对

使用道具 举报

发表于 2010-2-28 12:49:13 | 显示全部楼层
http://wiki.osdev.org/GCC_Cross-Compiler
写得很详细,编译错误请看自己编译产生的config.log,找到错误,到网上搜,我就是这样找到上面的网址的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表