Как установить 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). Как я могу исправить эту проблему?

Ответ 1

Вы можете попробовать установить 32-битную библиотеку (не все в ia32-libs):

apt-get install program: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

Ответ 2

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

sudo apt-get install gcc-multilib

Ответ 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

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

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

Ответ 5

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

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

Ответ 6

У меня была та же проблема, что и выше, и 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-битную версию libstdС++ 6:

sudo apt-get install lib32stdc++6

Ответ 7

Для меня мне нужно запустить

sudo dpkg --add-architecture i386

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

Ответ 8

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

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

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

Цитата webupd8.org:

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

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

Проблема с некоторыми программами (например, Google Earth) заключается в том, что 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

Ответ 9

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" на "exact" (для Ubuntu 13.04 (Raring Ringtail) и Ubuntu 12.04 LTS (точный панголин) соответственно). Я установил Beyond Compare в Ubuntu 14.04 (Trusty Tahr).

Ответ 10

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

Ответ 11

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