致命错误:卸载的sys-devel / binutils - emerge不再起作用了

时间:2015-12-14 21:33:17

标签: linux binutils gentoo

我在3周前清理了系统并犯了一个致命的错误。
嗯,我真的不知道为什么,但我卸载了 sys-devel / binutils

在我认识到我尝试重新出现的错误之后,但它不起作用。
下一步是从Gentoo下载stage3并将 sys-devel / binutils 从那里复制到本地树。
不起作用。

之后我去了假期并今天回来了,所以我需要解决这个问题,主要是不重新安装整个系统。

当我尝试出现像 x11-apps / xinput 这样的内容时,我会收到以下内容:

来自emerge的

输出:

  

检查C编译器是否正常工作......没有   configure:error:在`/var/tmp/portage/x11-apps/xinput-1.6.2/work/xinput-1.6.2_build'中:
  configure:错误:C编译器无法创建可执行文件

来自emerge的

config.log:

  

configure:3372:检查C编译器是否正常工作   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:内部编译器错误:非法指令(程序为)

来自/ 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)

使用:

  • SYS-devel的/ binutils的-2.25.1-R1
  • SYS-devel的/ GCC-4.9.3

有什么建议吗?任何提示?有什么想法要修复吗?让我知道!

1 个答案:

答案 0 :(得分:1)

我曾经去过那里,虽然令人生畏,但这是可以控制的。在继续之前,你的工具链必须是理智的。去其他发行版获取文件,使用过时的工具链二进制文件转到Gentoo ISO,或者进行系统更新会让你处于更加不确定的状态。要纠正,您需要:

  1. binutils安装正确。
  2. Gentoo正确识别gcc及其相关库
  3. 运行测试以确保编译器正常工作
  4. 我假设您下载binutils软件包时已正确安装它。如果没有,命令应该是(对于版本2.25.1-r1):

    cp binutils-2.25.1-r1.tbz2 /usr/portage/distfiles  # assuming you use default location 
    chown portage.portage /usr/portage/distfiles/binutils-2.25.1-r1.tbz2
    emerge -1 --usepkgonly =binutils-2.25.1-r1    # this will install binutils properly
    

    如果这不起作用,您可以尝试将binutils解压缩到根目录,但这是危险且不推荐。如果你必须这样做,请确保你把" p" tar命令中的选项(保存权限),或者之前的情况会更糟。

    现在安装了这个,很可能你的GCC配置文件将不再有效,这通常是" C编译器无法创建可执行文件"手段。这一切都需要在同一个终端完成:

    gcc-config -l    # Get a list of available gcc profiles
    gcc-config 1     # Replace 1 with whichever gcc version is correct (for 4.9.3)
    source /etc/profile
    

    现在,运行test emerge(在您获取配置文件的同一终端中):

    emerge -1 xinput  # Using your example package
    

    如果有效,您应关闭所有其他终端或在所有终端中提供个人资料,以确保您在开放会话中不会遇到环境问题。