Wymuś kompilację 32-bitowych programów na platformie 64-bitowej
Mam własny program, który próbuję wykorzystać na 64-bitowym systemie.
Po uruchomieniu konfiguracji Działa ok, ale po tym jak próbuje się zaktualizować i skompilować niektóre moduły i nie ładuje ich.
Podejrzewam, że to dlatego, że używa gcc i gcc próbuje skompilować je dla systemu 64 bitowego i dlatego ten program nie może używać tych modułów.
Czy Jest jakiś sposób (jakieś zmienne środowiskowe czy coś w tym stylu) aby zmusić gcc do zrobienia wszystkiego dla 32 Platforma bit. Czy 32-bitowy chroot zadziała?
3 answers
Musisz sprawić, by GCC używało flagi -m32
.
Możesz spróbować napisać prosty skrypt powłoki do {[1] } i nazwać go gcc (upewnij się, że nie nadpisujesz oryginalnego gcc i upewnij się, że nowy skrypt pojawi się wcześniej w $PATH
, i że używa pełnej ścieżki do GCC.
Myślę, że kod, którego potrzebujesz, jest po prostu czymś w rodzaju /bin/gcc -m32 $*
w zależności od powłoki ({[4] } jest tam, aby zawierać wszystkie argumenty, chociaż może to być coś innego-bardzo ważne!)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-17 09:17:49
Możesz uzyskać 32-bitowy kod binarny stosując metodę Alana Pearce ' a, ale możesz również uzyskać błędy w następujący sposób:
fatal error: bits/predefs.h: No such file or directory
Jeśli tak jest i masz apt-get, po prostu zainstaluj gcc-multilib
sudo apt-get install gcc-multilib
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-20 06:40:23
Dla dowolnego kodu, który kompilujesz bezpośrednio za pomocą gcc
/g++
, będziesz musiał dodać opcję -m32
do wiersza poleceń kompilacji, po prostu edytuj swoje CFLAGS
, CXXFLAGS
i LDFLAGS
zmiennych w Twoim Makefile
.
Dla dowolnego kodu stron trzecich, którego możesz używać, musisz upewnić się podczas kompilacji, aby skonfigurować go do kompilacji krzyżowej. Uruchom ./configure --help
i sprawdź, które opcje są dostępne. W większości przypadków możesz podać swoje CFLAGS
, CXXFLAGS
oraz LDFLAGS
zmiennych do skryptu configure. Może być również konieczne dodanie --build
i --host
do skryptu configure, aby skończyć z czymś takim
./configure CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu
Jeśli kompilacja nie powiedzie się, prawdopodobnie oznacza to, że musisz zainstalować niektóre 32-bitowe Pakiety programistyczne na 64-bitowej maszynie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-20 07:10:24