首页 文章

如何在Ubuntu 14.04 LTS(Trusty Tahr)中安装ia32-libs

提问于
浏览
114

我昨天安装了Ubuntu 14.04(Trusty Tahr) . 一切似乎都好 . 但是当我尝试编译一些C代码时,遇到以下错误 . 该错误似乎是由于操作系统缺乏32位架构支持 . 错误输出如下:

/usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_debug.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_str.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_cfg_common.o)' is incompatible with i386:x86-64 output

当我使用Ubuntu 12.04(精确穿山甲)时,我曾经 apt-get install ia32-libs . 但据我所知,自Ubuntu 13.10(Saucy Salamander)以来,Ubuntu已经删除了ia32-libs . 我该如何解决这个问题?

11 回答

  • 2
    sudo -i
    cd /etc/apt/sources.list.d
    echo "deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse" >ia32-libs-raring.list
    apt-get update
    apt-get install ia32-libs
    rm /etc/apt/sources.list.d/ia32-libs-raring.list
    apt-get update
    exit
    

    如果您在中国,可以将"raring"修改为"precise"(分别为Ubuntu 13.04(Raring Ringtail)和Ubuntu 12.04 LTS (Precise Pangolin)) . 我在Ubuntu 14.04(Trusty Tahr)上安装了Beyond Compare .

  • 0

    问题是,在许多情况下,软件包已经是multiarch,因此i386软件包不可用,但其他软件包仍然只依赖于i386软件包 . 这是存储库中的问题,并且存储库的管理者应该修复它

  • 7

    解决方案是将相应的Debian包方式添加到您的存储库 . 为此,键入以下命令:

    echo "deb ftp.us.debian.org/debian wheezy main" >> /etc/apt/sources.list
    sudo apt-get update
    sudo apt-get install ia32-libs-i386
    

    第一行在 sources.list 文件的末尾写入包的方式 . 这对我有用 . 我希望这对你有所帮助 .

  • 56

    您可以尝试这个来安装32位库(不是所有在ia32-libs中):

    sudo  apt-get install program:i386
    

    sudo dpkg --add-architecture i386 可能是必需的(如果你还没有运行过) .


    或者,如果您想要安装整个ia32-lib,请尝试以下顺序:

    sudo -i
    cd /etc/apt/sources.list.d
    echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
    apt-get update
    apt-get install ia32-libs
    

    PS:通过这种方式,您可以安装 ia32-libs . 但是,我们添加了13.04的源代码,因此可能存在一些未知问题 . 安装 ia32-libs 后,我建议您删除 /etc/apt/sources.list.d 中的 ia32-libs-raring.list ,并执行 sudo apt-get update .


    如果您想修复Android SDK的依赖关系,可以尝试以下方法:

    sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1

  • 17

    安装gcc多个库 .

    sudo apt-get install gcc-multilib
    
  • 20

    我见过的最好的答案是How to run 32-bit applications on Ubuntu 64-bit?

    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
    sudo ./adb
    
  • 4

    我终于明白了!这是我的方式,我希望它可以帮助你:)

    sudo apt-get install libc6:i386
    sudo -i
    cd /etc/apt/sources.list.d
    echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
    apt-get update
    apt-get install ia32-libs
    rm /etc/apt/sources.list.d/ia32-libs-raring.list
    apt-get update
    exit
    sudo apt-get install gcc-multilib
    

    我没有时间尝试 . 哦,是的,我需要告诉你 . 这次当你想编译你的代码时,你应该在 gcc 之后添加 -m32 ,例如: gcc -m32 -o hello helloworld.c . 再次 make cleanmake . 祝你好运的朋友 .

    PS:我的环境是:Ubuntu 14.04 64位(Trusty Tahr)和GCC 4.8.4版 . 我已经在我的博客中写了解决方案,但它是中文:-) - How to compass 32bit programm under ubuntu14.04 .

  • 140

    这些替代库对我有用:

    sudo apt-get update
    sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
    
  • 1

    我遇到了和上面相同的问题,Eclipse建议安装:

    Hint: On 64-bit systems, make sure the 32-bit libraries are installed:   
       "sudo apt-get install ia32-libs"    
    or on some systems,  
       "sudo apt-get install lib32z1"
    

    当我尝试安装ia32-libs时,Ubuntu提示安装其他三个软件包:

    $ sudo apt-get install ia32-libs  
    Reading package lists... Done  
    Building dependency tree         
    Reading state information... Done  
    Package ia32-libs is not available, but is referred to by another package.  
    This may mean that the package is missing, has been obsoleted, or  
    is only available from another source  
    However the following packages replace it:  
      lib32z1 lib32ncurses5 lib32bz2-1.0  
    
    E: Package 'ia32-libs' has no installation candidate  
    $   
    $ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
    

    使用Android Studio和intellij,我还必须安装32位版本的libstdc 6:

    sudo apt-get install lib32stdc++6
    
  • 74

    对我来说,我必须跑

    sudo dpkg --add-architecture i386
    

    在运行Mike Tang的回答之前 . 否则,我无法安装ia32-libs .

  • 29

    Simply install the 32-bit version of the program, 而不是64位版本 .

    这比安装不适合手头发行的软件包安全得多 .

    我从Google Earth installation instructions for Ubuntu 14.04得到了这个建议 . 谷歌地球曾经在64位Ubuntu 12.04下使用 ia32-libs .

    引用webupd8.org

    从Ubuntu 13.10开始,Ubuntu中不再提供ia32-libs软件包 . 该软件包已被多域支持取代,因此您不再需要它,但是一些64位软件包(实际上是32位应用程序)仍依赖于此软件包,因此,它们无法安装在Ubuntu 14.04或13.10中, 64位 . [...]“修复”或更具体地说,安装依赖于ia32-libs的这些应用程序的正确方法是在Ubuntu 64bit上安装32位软件包 . 当然,这将安装相当多的32位软件包,但这就是multiarch的工作方式 .

    某些程序(如Google Earth)的问题在于32位软件包不支持multiarch . 因此,需要手动安装一些32位依赖项,以使32位版本的程序在Ubuntu 64位上运行 .

    sudo dpkg --add-architecture i386 # only needed once
    sudo apt-get update
    sudo apt-get install libfontconfig1:i386 libx11-6:i386 libxrender1:i386 libxext6:i386 libgl1-mesa-glx:i386 libglu1-mesa:i386 libglib2.0-0:i386 libsm6:i386
    

相关问题