Problemy z kompilacją 32-bitowego pliku binarnego na 64-bitowej maszynie

13

Próbuję skompilować program ac jako 32-bitowy plik binarny zamiast 64-bitowego. Zacząłem od dodania -m32i otrzymałem kilka błędów. Rozglądając się trochę, natknąłem się na notatkę, aby zainstalować ia32-libs. Uruchomienie apt-get install ia32-libsspowodowało powiadomienie, że zostało już zainstalowane oraz w najnowszej wersji.

Istnieje łańcuch bibliotek, w tym każda następna, aż do awarii:

/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory

Wygląda na to, że zawiera 32-bitowe wersje drugiej wersji /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

czego mi brakuje?

Matt
źródło

Odpowiedzi:

40

Odpowiedź Lekensteyn była sprzeczna z wieloma istniejącymi pakietami dla mnie (w 64-bitowym oneiric).

Zamiast tego zrobiłem to, co pociągnęło za sobą libc6-dev-i386pakiet:

apt-get install gcc-multilib
AB
źródło
7

ia32-libszawiera tylko niektóre biblioteki kompatybilności, które nie zostały jeszcze zmigrowane do Multi Arch. Aby skompilować biblioteki 32-bitowe, musisz zainstalować biblioteki 32-bitowe i pliki programistyczne dla C:

sudo apt-get install libc6-dev:i386

Zobacz także: Czy funkcja multiarch w 11.10 oznacza śmierć siły - instaluje się architektura?

Lekensteyn
źródło
Instalacja libc6-dev:i386nalegała na usunięcie całego pakietu kompilatora GNU (co dało mi mały atak serca), ale po użyciu sudo apt-get install build-essentialwszystko działało idealnie.
Matt
Dla mnie odinstalowałem także nvidia-current ... przeinstalowałem bez żadnych problemów.
Jeff
1
Zauważ, że opcja podana przez alberge wydaje się lepsza, ponieważ nie usuwa mnóstwa innych rzeczy do zainstalowania bibliotek 32-bitowych.
Fabio Zadrozny