Zbudować 32bit na 64 bitowym Linuksie przy użyciu skryptu automake configure?
Używam 64-bitowego systemu, ale chcę mieć zestaw 32-bitowych binariów. Jakie opcje muszę przekazać skrypt configure, aby wygenerować plik makefile 32bit / x86?
5 answers
Podanie następującego argumentu do configure script pozwoliło mi zbudować 32-bitową bibliotekę na 64-bitowym Linuksie
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
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-07-25 04:46:31
Odpowiedź Jacka jest niekompletna.
Potrzebujesz wsparcia kompilatora / libc dla kompilacji 32-bitowej. W niektórych dystrybucjach, takich jak Ubuntu, musisz zainstalować pakiety gcc-multilib
i / lub g++-multilib
:
sudo apt-get install gcc-multilib g++-multilib
Następnie możesz wywołać configure tak jak powiedziałeś, podać 32-bitowy host i przekazać 32-bitowe flagi kompilacji:
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Jeśli nie masz zainstalowanego multilib, podczas przekazywania znacznika -m32
pojawi się błąd podobny do configure: error: C compiler cannot create executables
.
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-22 18:26:37
Miałem lepszy sukces, ustawiając Niestandardowy kompilator. W ten sposób wszystkie testy configure, nawet te z niestandardowymi CFLAGAMI, działały poprawnie:
./configure CC="gcc -m32" CXX="g++ -m32"
Nadal potrzebujesz 32-bitowych wersji wszystkich bibliotek, których używa aplikacja, więc wszelkie błędy dotyczące brakujących bibliotek odnoszą się do tych 32-bitowych.
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
2015-02-20 22:52:06
Zakładając gcc / g++:
CPPFLAGS=-m32 ./configure ...
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-07-16 04:33:24
Alternatywnym sposobem na rzeczy opisane powyżej byłoby (jeśli masz) użycie dedykowanego kompilatora x86. Linia configure będzie wyglądać następująco (nazwałem x86-tools wzorcem "
CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure
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
2015-07-11 16:07:04