三周前我清理了我的系统并犯了一个致命的错误。好吧,我真的不知道为什么,但我卸载了系统开发/binutils。
当我认识到错误后,我尝试重新出现,但它不起作用。下一步是从 Gentoo 下载 stage3 并sys-devel/binutils
从那里复制到本地树。
没用。
当我尝试出现类似的东西时x11-apps/xinput
,我收到以下信息:
出现的输出:
checking whether the C compiler works... no
configure: error: in `/var/tmp/portage/x11-apps/xinput-1.6.2/work/xinput-1.6.2_build':
configure: error: C compiler cannot create executables
来自emerge的config.log:
configure:3372: checking whether the C compiler works
configure:3394: x86_64-pc-linux-gnu-gcc -m32 -march=core-avx-i -mtune=core-avx-i -O2 -pipe -Wl, -O1 -Wl, --as-needed conftest.c >&5
x86_64-pc-linux-gnu-gcc: internal compiler error: Illegal instruction (program as)
来自 /usr/bin/as 的 ldd:
linux-vdso.so.1 (0x00007ffee41b9000)
libopcodes-2.25.1.so => /usr/lib64/binutils/x86_64-pc-linux-gnu/2.25.1/libopcodes-2.25.1.so (0x00007f2045ff8000)
libbfd-2.25.1.so => /usr/lib64/binutils/x86_64-pc-linux-gnu/2.25.1/libbfd-2.25.1.so (0x00007f2045cd3000)
libz.so.1 => /lib64/libz.so.1 (0x00007f2045abd000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2045722000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f204551e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f204637f000)
使用:
- 系统开发/binutils-2.25.1-r1
- 系统开发/gcc-4.9.3
有什么建议要做吗?有什么提示吗?有什么想法要解决吗?让我知道!
答案1
复制sys-devel/binutils
并没有解决您的问题,因为这只是定义binutils
.它不起作用,因为您需要该包来构建任何东西,正如您已经意识到的那样。您需要做的是复制该包中的文件。文件和目录是:
/etc/env.d/binutils/x86_64-pc-linux-gnu-2.25.1
/usr/lib64/binutils/x86_64-pc-linux-gnu/*
/usr/share/binutils-data/x86_64-pc-linux-gnu/*
/usr/x86_64-pc-linux-gnu/binutils-bin/*
将这些文件/目录从第 3 阶段 tarball 复制(递归)到您的实时系统中。然后,运行env-update
并注销并重新登录或source /etc/profile
加载更新的环境。检查一切是否正常,之后您应该做的第一件事是emerge binutils
正确构建该包并将其记录在您的世界文件中。
如果在此之后您仍然无法出现问题,您可能必须对其他软件包重复该过程。最糟糕的情况是,您可以从第 3 阶段构建中复制/usr
和/bin
层次结构,如果您这样做,我建议您跟进emerge --sync
并emerge -e world
重建所有内容。祝你好运。
答案2
是的,凯西是对的。简短(但不快)的方法是:
从下载当前的 stage3https://www.gentoo.org/downloads/- 为您的架构使用正确的 stage3
将其解压缩/解压到 /:
xz --decompress stage3-*.xz
tar -xvf stage3*.tar -C /
更新环境:
env-update
source /etc/profile
再次出现(这将需要很多时间)
emerge -avqeDN @world
重启
reboot
我希望它会有所帮助。