Как установить ia32-libs в Ubuntu 14.04 LTS (Trusty Tahr)

Вчера я установил 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

Я использовал apt-get install ia32-libs, когда использовал Ubuntu 12.04 (Precise Pangolin). Но я знаю, что Ubuntu удалила ia32-libs с Ubuntu 13.10 (Saucy Salamander). Как я могу решить эту проблему?

114 голосов | спросил andycoder 20 PMpSun, 20 Apr 2014 17:02:58 +040002Sunday 2014, 17:02:58

10 ответов


0

Вы можете попробовать это установить 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 я рекомендую удалить ia32-libs-raring.list в /etc/apt/sources.list.d и выполните sudo apt-get update.


Если вы хотите исправить зависимость Android SDK, попробуйте следующее:

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

ответил MikeCoder 21 PMpMon, 21 Apr 2014 13:18:46 +040018Monday 2014, 13:18:46
0

Установите несколько библиотек gcc.

sudo apt-get install gcc-multilib
ответил Nelson Chen 30 J000000Wednesday14 2014, 14:10:03
0

Лучший ответ, который я когда-либо видел, это Как запускать 32-битные приложения в 64-битной Ubuntu?

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./adb
ответил Aleksei 30 AM00000020000003531 2014, 02:09:35
0

Я наконец понял! Вот мой путь, и я надеюсь, что он поможет вам:)

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

Я не знаю причину, по которой мне нужно их устанавливать, но она работает на моем компьютере. Когда вы закончите установку этих пакетов, самое время попробовать. О да, я должен сказать тебе. На этот раз, когда вы хотите скомпилировать свой код, вы должны добавить -m32 после gcc, например: gcc -m32 -o hello helloworld.c. Просто make clean и make еще раз. Удачи, друзья.

PS: моя среда: Ubuntu 14.04 64-bit (Trusty Tahr) и GCC версии 4.8.4. Я написал решение в своем блоге, но оно на китайском языке :-) - Как компасить 32-битную программу под Ubuntu14.04 .

ответил andycoder 26 AMpSat, 26 Apr 2014 10:55:24 +040055Saturday 2014, 10:55:24
0

Эти альтернативные библиотеки работали для меня:

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
ответил wisbucky 22 AM00000050000004431 2014, 05:31:44
0

У меня была та же проблема, что и выше, и 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
ответил Bob 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 12 Sep 2014 09:29:22 +0400 2014, 09:29:22
0

Для меня я должен бежать

sudo dpkg --add-architecture i386

перед тем как запустить ответ Майка Тана. В противном случае я не могу установить ia32-libs.

ответил fkpwolf 21 J0000006Europe/Moscow 2014, 19:02:36
0

Просто установите 32-разрядную версию программы, вместо 64-разрядной версии.

Это гораздо безопаснее, чем устанавливать пакеты, которые не предназначены для распространения.

Я получил это предложение от Google Инструкция по установке заземления для Ubuntu 14.04 . Google Планета Земля использовала ia32-libs в 64-разрядной версии Ubuntu 12.04.

Цитирование webupd8.org :

  

Пакет ia32-libs больше не доступен в Ubuntu, начиная с   Убунту 13.10. Пакет был заменен поддержкой multiarch, так что вы   больше не нужно, но некоторые 64-битные пакеты (которые на самом деле   32-битные приложения) все еще зависят от этого пакета, и поэтому   они не могут быть установлены в Ubuntu 14.04 или 13.10, 64bit. [...]

     

«Исправить» или, более конкретно, правильный способ установки этих   приложения, которые зависят от ia32-libs, просто устанавливают 32-битный пакет   на Ubuntu 64bit. Конечно, это установит довольно много 32-битных   пакеты, но так работает мультиарх.

Проблема с некоторыми программами (например, с Google Планета Земля) заключается в том, что 32-разрядный пакет не поддержка мультиарх. Следовательно, некоторые 32-разрядные зависимости необходимо установить вручную, чтобы 32-разрядная версия программы работала в 64-разрядной версии Ubuntu.

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
ответил Serge Stroobandt 15 PM00000070000002231 2014, 19:37:22
0
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» на «точный» (для Ubuntu 13.04 (Raring Ringtail) и 12 LTS (Precise Pangolin) соответственно). Я установил Beyond Compare в Ubuntu 14.04 (Trusty Tahr).

ответил user3999490 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2014 11:59:03 +0400 2014, 11:59:03
0

Решением является добавление соответствующего пути 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 путь пакета. Это работает для меня. Я желаю, чтобы это помогло вам.

ответил bbruno5 1 +04002014-10-01T20:37:30+04:00312014bEurope/MoscowWed, 01 Oct 2014 20:37:30 +0400 2014, 20:37:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132