Wczoraj zainstalowałem Ubuntu 14.04 (Trusty Tahr). Wszystko wydaje się w porządku. Ale kiedy próbowałem skompilować kod C, napotykam następujący błąd. Wydaje się, że błąd jest spowodowany brakiem obsługi architektury 32-bitowej przez system operacyjny. Wynik błędu jest następujący:
/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
Kiedyś używałem apt-get install ia32-libs
Ubuntu 12.04 (Precise Pangolin). Ale wiem, że Ubuntu usunęło ia32-libs od Ubuntu 13.10 (Saucy Salamander). Jak mogę rozwiązać ten problem?
gcc -m32 helloworld.c
. Powodzenia.Odpowiedzi:
Możesz spróbować zainstalować 32-bitową bibliotekę (nie wszystkie w ia32-libs):
sudo dpkg --add-architecture i386
może być wymagane (jeśli nigdy tego nie uruchomiłeś).Lub jeśli zamiast tego chcesz zainstalować całą ia32-lib, wypróbuj następującą kolejność:
PS: W ten sposób możesz zainstalować
ia32-libs
. Jednak zamiast tego dodajemy źródło 13.04, więc może wystąpić jakiś nieznany problem. Po zainstalowaniuia32-libs
polecam usunąćia32-libs-raring.list
in/etc/apt/sources.list.d
i zrobićsudo apt-get update
.Jeśli chcesz naprawić zależność od Android SDK, możesz spróbować tego poniżej:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
źródło
apt-get update
. Więc zmieniłem źródło pakietu nadeb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse
. Teraz działa.Zainstaluj wiele bibliotek gcc.
źródło
libstdc++6-4.7-dev:i386
to wymagane do wyodrębnienia maszyn wirtualnych Internet Explorer ze strony www.modern.iesudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Najlepsza odpowiedź, jaką kiedykolwiek widziałem, brzmi: Jak uruchamiać aplikacje 32-bitowe na 64-bitowym systemie Ubuntu?
źródło
W końcu to dostałem! Oto moja droga i mam nadzieję, że może ci pomóc :)
Nie znam powodu, dla którego muszę je zainstalować, ale działa na moim komputerze. Po zakończeniu instalacji tych pakietów czas spróbować. O tak, muszę ci powiedzieć. Tym razem, gdy chcesz skompilować swój kod, powinieneś dodać
-m32
po nimgcc
npgcc -m32 -o hello helloworld.c
. : . Po prostumake clean
imake
znowu. Powodzenia przyjaciele.PS: moje środowisko to: Ubuntu 14.04 64-bit (Trusty Tahr) i GCC w wersji 4.8.4. Rozwiązanie napisałem na swoim blogu, ale jest po chińsku :-) - Jak kompasować program 32-bitowy pod ubuntu14.04 .
źródło
Te alternatywne biblioteki pracowały dla mnie:
źródło
Miałem ten sam problem co powyżej i Eclipse zasugerował instalację:
Kiedy próbowałem zainstalować ia32-libs, Ubuntu poprosił o zainstalowanie trzech innych pakietów:
W przypadku Android Studio i intellij musiałem również zainstalować 32-bitową wersję libstdc ++ 6:
źródło
lib32z1
jest bezcenneDla mnie muszę biec
przed uruchomieniem odpowiedzi Mike'a Tanga. W przeciwnym razie nie mogę zainstalować ia32-libs.
źródło
Po prostu zainstaluj 32-bitową wersję programu zamiast 64-bitowej.
Jest to o wiele bezpieczniejsze niż instalowanie pakietów, które nie są przeznaczone do obecnej dystrybucji.
Mam tę sugestię z instrukcji instalacji programu Google Earth dla Ubuntu 14.04 . Google Earth pracował
ia32-libs
pod 64-bitowym Ubuntu 12.04.Cytując webupd8.org :
Problem z niektórymi programami (np. Google Earth) polega na tym, że pakiet 32-bitowy nie obsługuje multiarch. W związku z tym niektóre 32-bitowe zależności należy zainstalować ręcznie, aby 32-bitowa wersja programu działała na 64-bitowym systemie Ubuntu.
źródło
Jeśli jesteś w Chinach, możesz zmienić „raring” na „precyzyjny” (odpowiednio dla Ubuntu 13.04 (Raring Ringtail) i Ubuntu 12.04 LTS (Precise Pangolin) ). Zainstalowałem Beyond Compare na Ubuntu 14.04 (Trusty Tahr).
źródło
Problem polega na tym, że w wielu przypadkach pakiety są już multiarchowe, więc pakiet i386 nie jest dostępny, ale inne pakiety nadal zależą tylko od pakietu i386. To jest problem w repozytorium i menedżerowie repozytoriów powinni go naprawić
źródło
Rozwiązaniem jest dodanie odpowiedniego pakietu Debiana do swojego repozytorium. W tym celu wpisz poniższe polecenia:
Pierwsza linia na końcu
sources.list
pliku zapisuje pakiet w sposób. To działa dla mnie. Chciałabym, żeby ci to pomogło.źródło