Ubuntu 14.04 LTS (Trusty Tahr)에 ia32-libs를 설치하는 방법


115

어제 Ubuntu 14.04 (Trusty Tahr)를 설치했습니다. 모든 것이 괜찮은 것 같습니다. 그러나 일부 C 코드를 컴파일하려고 할 때 다음 오류가 발생합니다. 이 오류는 32 비트 아키텍처 지원이없는 OS로 인한 것 같습니다. 오류 출력은 다음과 같습니다.

/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-libsUbuntu 12.04 (Precise Pangolin) 를 사용할 때 사용했습니다 . 하지만 내가 아는 것은 Ubuntu가 Ubuntu 13.10 (Saucy Salamander) 이후 ia32-libs를 제거했다는 것입니다. 이 문제를 어떻게 해결할 수 있습니까?


Ubuntu에 대한 다중 아키텍처 정보를 확인하십시오. 패키지 이름에 : i386을 추가하여 32 비트 버전을 설치할 수 있습니다.
TeTeT 2014

1
정확히이 문제가 있습니다 .fortinet vpn 클라이언트를 실행하려면 ia32-libs가 필요하며 10.04 LTS 및 12.04 LTS에서 완벽하게 작동합니다. 'sudo apt-get install ia32-libs : i386'을 시도했지만 작동하지 않습니다. 'lib32z1 lib32ncurses5 lib32bz2-1.0'패키지도 설치했지만 작동하지 않습니다.
javaPhobic

@javaPhobic 나는 ubuntu12.04 (32bit)를 설치하기로 결정했습니다. 내 질문에 대해 몇 가지 답변이 있습니다. 내 열쇠는 아니지만 도움을 줄 수 있습니다. 1. 정리를 시도한 다음 코드를 다시 만들 수 있습니다. 2. Mike Tang의 대답처럼 전체 ia32-libs를 설치하려고 할 수 있습니다. 3. 코드를 컴파스 할 때``-m32`를 추가 할 수 있습니다 (예 : gcc -m32 helloworld.c. 행운을 빕니다.
andycoder

이것은 실제로 Server Fault에 있어야합니다.
AStopher

2
나는이 질문을 주제에서 벗어난 것으로 종료하는 데 투표하고 있습니다. 왜냐하면 그것은 리눅스 용 라이브러리의 위치에 관한 것입니다. 접선 적으로 프로그래밍에 관한 것이지만 솔루션은 프로그래밍이 아닌 Linux 구성 답변에 가깝습니다.
BradleyDotNET

답변:


140

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

추신 :이 방법으로 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


3
E는 : 패키지 'IA32 - libs와'더 설치 후보가 없습니다
ThatAintWorking

2
archive.ubuntu.com에 액세스 할 수 없습니다. 많은 동안 찾을 수 없습니다apt-get update . 그래서 패키지 소스를 deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse. 이제 작동합니다.
Tim Wu

3
Raring 아카이브는 더 이상 우분투 아카이브에서 사용할 수 없습니다. 정확한 아카이브를 위해 raring 아카이브를 변경했습니다. 이제 ia32-libs 패키지가 설치됩니다.
Martijn Burger

14.04에서는 작동하지 않습니다. 나를 위해 작동하는 솔루션은 Aleksei의 대답입니다.
joelparkerhenderson

1
두 번째 줄은 echo "deb old-releases.ubuntu.com/ubuntu raring main limited universe multiverse"> /etc/apt/sources.list.d/ia32-libs-raring.list
Vigen

77

gcc 다중 라이브러리를 설치하십시오.

sudo apt-get install gcc-multilib

2
14.04의이 gcc-multilib 메타 패키지는 지금까지 12.04에 있던 ia32-libs 메타 패키지에 대한 가장 가까운 드롭 인 대체품이지만 명시 적으로 ia32-libs로 설정된 패키지 종속성을 충족하지 못합니다. .
quickthyme

7
충분히 찬성 할 수 없습니다. 이것과는 libstdc++6-4.7-dev:i386www.modern.ie에서 인터넷 익스플로러 가상 머신을 추출하는 데 필요합니다
테크

이것은 여전히 ​​우분투 16.04에서 작동합니다 (하지만 그것이 얼마나 완전한지 모르겠습니다)
Peter

나는 또한 :sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Mike Godin

56

내가 본 최고의 대답은 Ubuntu 64 비트에서 32 비트 애플리케이션을 실행하는 방법입니다.

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

2
내 adb (clockworkmod 탄소 / 헬륨으로 포장 됨)에 완전히 문제였습니다. 내 문제에 대한 답변에 감사드립니다 (아마도 OP 문제는 아니지만 ^^). 어쨌든,이 대답은 나에게 더 깨끗한 것 같습니다. 이전 우분투 버전 저장소 링크를 추가하지
않아도

1
이것은 또한 도움이되지 않는 (Google 결과도 거의 없으므로 색인이 생성되기를기도합니다) "공유 라이브러리를로드하는 동안 오류 : libncurses.so.5"오류가 발생하는 트릭을 수행했습니다. 감사!
Honoki 2014

우분투 14.04에 대한 좋은 대답하지만 16.04에서 작업을하지 않습니다
피터

29

드디어 얻었다! 여기 내 방법이 있으며 도움이 되었기를 바랍니다. :)

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. 행운을 빕니다.

추신 : 내 환경 : Ubuntu 14.04 64 비트 (Trusty Tahr) 및 GCC 버전 4.8.4. 내 블로그에 솔루션을 작성했지만 중국어로되어 있습니다. :-)- ubuntu14.04에서 32 비트 프로그램을 나침반하는 방법 .


실제로이 작업을 수행해야하는 사람에게는 분명하지만 rm 문에 "/"를 넣지 마십시오.
keefer

네, 제 실수입니다. 지금 고쳤습니다. 당신에게 ~ @keefer 감사
andycoder

2
-1 : 작동하지만, 정말 나쁜 습관입니다. 이 AskUbuntu 게시물 에는 이전 저장소를 설치할 필요가없는 훨씬 더 나은 솔루션이 있습니다. 이 방법은 아주 오래된 바이너리 꾸러미에만 필요합니다. 그러나 소스 코드가 있으므로이 방법은 실제로 적절하지 않습니다.
jmiserez

Raring 아카이브는 더 이상 우분투 아카이브에서 사용할 수 없습니다. 정확한 아카이브를 위해 raring 아카이브를 변경했습니다. 이제 ia32-libs 패키지가 설치됩니다.
Zhenya 2014 년

나도 -1. 2 가지 버전에서 오는 의존성 문제에 직면하게 될 것입니다. 나중에 레이 링 참조를 제거하더라도. @jmiserez와 완전히 동의합니다.
Dolanor 2014 년

20

이 대체 라이브러리는 나를 위해 일했습니다.

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

17

위와 같은 문제가 있었고 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

ia32-libs 패키지가 쓸모없고 작동하기 때문에 이것은 나에게 해결책으로 보입니다!
다니엘 수자

이것은 lib32z1귀중한 것입니다
zjk

8

나를 위해 난 달려야 해

sudo dpkg --add-architecture i386

Mike Tang의 답변을 실행하기 전에. 그렇지 않으면 ia32-libs를 설치할 수 없습니다.


4

32 비트 버전의 프로그램을 설치하기 만하면64 비트 버전 대신 됩니다.

이것은 배포 용이 아닌 패키지를 설치하는 것보다 훨씬 안전합니다.

Ubuntu 14.04에 대한 Google 어스 설치 지침 에서이 제안을 받았습니다 . Google 어스는 ia32-libs64 비트 Ubuntu 12.04 미만을 사용했습니다 .

webupd8.org 인용 :

ia32-libs 패키지는 Ubuntu 13.10부터 Ubuntu에서 더 이상 사용할 수 없습니다. 이 패키지는 다중 아키텍처 지원으로 대체되었으므로 더 이상 필요하지 않지만 일부 64 비트 패키지 (실제로는 32 비트 응용 프로그램)는 여전히이 패키지에 의존하며 이로 인해 Ubuntu 14.04 또는 13.10에 설치할 수 없습니다. 64 비트. [...]

ia32-libs에 의존하는 이러한 앱을 설치하는 "수정"또는보다 구체적으로 올바른 방법은 Ubuntu 64 비트에 32 비트 패키지를 설치하는 것입니다. 물론 이것은 32 비트 패키지를 꽤 많이 설치할 것이지만 멀티 아크가 작동하는 방식입니다.

일부 프로그램 (예 : Google 어스)의 문제는 32 비트 패키지가 다중 아키텍처를 지원하지 않는다는 것입니다. 따라서 32 비트 버전의 프로그램을 Ubuntu 64 비트에서 실행하려면 일부 32 비트 종속성을 수동으로 설치해야합니다.

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

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) ). 우분투 14.04 (Trusty Tahr)에 Beyond Compare 를 설치했습니다 .


1

문제는 많은 경우 패키지가 이미 다중 아키텍처이므로 i386 패키지를 사용할 수 없지만 다른 패키지는 여전히 i386 패키지에만 의존한다는 것입니다. 이것은 저장소의 문제이며 저장소 관리자가 수정해야합니다.


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파일 끝에 패키지 방식으로 씁니다 . 이것은 나를 위해 작동합니다. 도움이 되었으면합니다.


deb ftp : / / ftp. us .. etc, 작동하지만 내 문제를 해결하지 못했습니다 (
waza123
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.