LinuxSir.cn,穿越时空的Linuxsir!

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

执行su, passwd时出现Illegal instruction(已解决)

[复制链接]
发表于 2008-7-8 19:14:28 | 显示全部楼层 |阅读模式
我在ubuntu下用stage3安装了gentoo2008.0,安装后可以正常启动.

而后我又在ubuntu下chroot到gentoo下安装了xorg-x11,安装过程没有发现问题。但之后在安装xfce4时在安装dbus-1.2.1那个包时出错,提示: enewgroup failed

好像是一个组不能正常添加。

之后发现gentoo中passwd,su,adduser,groupadd等和账户管理有关的命令都不能正常执行,提示 Illegal instruction

我的make.conf :

CFLAGS="-O2 -march=k8 -msse3 -pipe -fomit-frame-pointer"
CXXFLAGS="-O2 -march=k8 -msse3 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j2"
GENTOO_MIRRORS="ftp://ftp3.tsinghua.edu.cn/mirror/gentoo"
ACCEPT_KEYWORDS="~x86"
VIDEO_CARDS="nvidia"
INPUT_DEVICES="keyboard mouse"
USE="-ipv6 -gnome -kde -qt3 -qt4 X dbus hal startup-notification xscreensaver -ieee1394"
FEATURES="parallel-fetch"
LDFLAGS="-Wl,-O1"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"

有朋友知道原因吗?
发表于 2008-7-8 19:43:22 | 显示全部楼层
CFLAGS 是不是设置错误了,看一下。到 Wiki 上看一下和您的 CPU 对的上的 CFLAGS,再重新安装 shadow 看看?
就是这个:http://www.gentoo-wiki.com/Safe_Cflags
回复 支持 反对

使用道具 举报

发表于 2008-7-8 19:49:46 | 显示全部楼层
-march=k8
问题肯定在这里,看看楼上的连接
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-8 19:59:46 | 显示全部楼层
我的cpu在/proc/cpuinfo里看到是
AMD Athlon(tm) 64 Processor 3000+
用k8不对吗?
而且在emerge xorg-x11之前,passwd是可以正常使用的
回复 支持 反对

使用道具 举报

发表于 2008-7-8 21:35:59 | 显示全部楼层
重新emerge一下
我没有amd的cpu,不知道也不想知道到底应该用什么,你要自己判断,如果你觉得你写的没错就自己再emerge一下

出现 illegal instruction 的原因是程序收到了SIGILL信号,而这个信号是cpu在发现非法指令之后发出一个异常,然后由负责处理该异常的内核的ISR对含有这个非法指令的进程发出的。程序收到这个信号,一般就是报告 illegal instruction 错误信息。

而且可执行程序含有非法指令的原因,一般也就是cpu架构不对,编译时指定的march和实际执行的机器的march不同。这种情况,因为工具链一样,连接脚本一样,所以可执行程序可以执行,不会发生exec format error。但是会包含一些不兼容的指令。
回复 支持 反对

使用道具 举报

发表于 2008-7-8 21:45:32 | 显示全部楼层
如果是这样,你先试试 emerge -1 shadow 吧!

http://www.gentoo-wiki.com/Safe_Cflags#Athlon_64_.28AMD.29
我看你的是 athlon-xp
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-8 23:33:21 | 显示全部楼层
重新emerge shadow之前已经试过,不行。

我再试着找找原因。

感谢两位!
回复 支持 反对

使用道具 举报

发表于 2008-7-8 23:38:04 | 显示全部楼层
CFLAGS="-march=k8 -O2 -pipe -fomit-frame-pointer -msse3"

我的是amd 3600+ 使用的是x86
回复 支持 反对

使用道具 举报

发表于 2008-7-9 13:27:22 | 显示全部楼层
amd64位的CPU用k8没错的。
回复 支持 反对

使用道具 举报

发表于 2008-7-9 19:17:59 | 显示全部楼层
-march=athlon64,用这个看看
回复 支持 反对

使用道具 举报

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

本版积分规则

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