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"
 61
Author: Jack Nock,
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.

 40
Author: volpato,
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.

 6
Author: Malvineous,
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 ...
 3
Author: R Samuel Klatchko,
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 "-x86"):

CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure
 1
Author: Haringat,
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