J'utilise un système 64 bits mais je veux un ensemble de binaires 32 bits. Quelles options dois-je passer à un script configure pour générer un fichier makefile 32bit/x86?Construire 32 bits sur Linux 64 bits en utilisant un automake configure script?
Répondre
En passant l'argument suivant pour configurer le script m'a permis de construire la bibliothèque 32bit sur Linux 64 bits
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Ne fonctionne pas pour moi :(S'il vous plaît aidez-moi à http://stackoverflow.com/questions/13780319/cant-build-32bit-wine-on-64bit-linux – m93a
Cela n'a pas fonctionné pour moi en essayant de construire Il m'a donné le message 'configure: error: le compilateur C++ ne peut pas créer d'exécutables. ' –
Cette réponse est incomplète, c'est pourquoi parfois vous pouvez obtenir l'erreur" le compilateur ne peut pas créer d'exécutable "Voir ma réponse dans ce même fil – volpato
En supposant gcc/g ++:
CPPFLAGS=-m32 ./configure ...
Merci pour la réponse. Le script configure définit toujours le type de système de construction et le type de système hôte sur x86_64-unknown-linux-gnu. Savez-vous comment les remplacer? –
La réponse de Jack est incomplète.
Vous avez besoin du support compilateur/libc pour la compilation 32 bits. Dans certains distros comme Ubuntu, ce que vous devez faire est d'installer des paquets gcc-multilib
et/ou g++-multilib
:
sudo apt-get install gcc-multilib g++-multilib
Ensuite, vous pouvez appeler configurer comme vous le dites, specifyiong un hôte 32 bits et le passage des drapeaux de compilation 32 bits:
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Si vous ne l'avez pas multilib installé, vous obtiendrez une erreur comme configure: error: C compiler cannot create executables
lors du passage du drapeau -m32
.
Certains programmes compilent 32 bits sur amd64 par défaut (par exemple, wine), peut-être en plus de 64 bits et devraient être capables de trouver multilib s'ils sont installés, ce qui ne semble pas être le cas pour OP. une chose - il devrait être '--build', pas' --host'. '--host' devrait être utilisé si et seulement si vous construisez un compilateur. Cela fonctionne toujours parce qu'il y a beaucoup de gens qui ne le font pas. RTFM et écrire des scripts qui utilisent '--host' au lieu de' --build', et les gens autotools ont cassé n assez de choses déjà. –
les paquets * -multilib n'existent plus dans l'étable Debian. – Braiam
J'ai mieux réussi en définissant un compilateur personnalisé à la place. De cette façon, tous les tests de configure, même ceux qui utilisent CFLAGS personnalisés, a fonctionné correctement:
./configure CC="gcc -m32" CXX="g++ -m32"
Vous devez encore les versions 32 bits de toutes les bibliothèques utilisées par l'application bien sûr, si des erreurs sur les bibliothèques manquantes font référence à les 32 bits.
Une alternative aux choses décrites ci-dessus serait (si vous avez) d'utiliser un compilateur x86 dédié. La ligne de configuration serait alors comme ça (j'ai nommé les x86 outils après le modèle « <toolname> -x86 »):
CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure
- 1. Construire 32 bits avec llvm-gcc 64 bits
- 2. Impossible d'exécuter les applications 32 bits sur Linux 64 bits
- 3. directive C# pour indiquer 32 bits ou 64 bits construire
- 4. SetEnvironmentVariable en 32 bits Processus sur OS Windows 64 bits
- 5. Comment puis-je construire le JIT pypy 32 bits dans Linux 64 bits?
- 6. Traiter le code 32 bits sur Snow Leopard 64 bits?
- 7. Xcode & 64 bits & 32 bits Question
- 8. quel mysql 32/64 bits
- 9. L'iPhone OS 64 bits ou 32 bits?
- 10. 64 bits flottants compilés avec le compilateur 32 bits sur OS 64 bits
- 11. Détection du mode 32 bits sur IIS 64 bits
- 12. debunits nunit en 64 bits, l'application est en 32 bits
- 13. Comment compiler un fichier binaire 32 bits sur une machine Linux 64 bits avec gcc/cmake
- 14. Serveur 32 bits Com sur système 64 bits
- 15. Pilote OLE DB 32 bits sur Windows 64 bits 7
- 16. Configuration JVM sur Linux 64 bits
- 17. Compiler le projet 32 bits VS 2003 en 64 bits
- 18. Chargement d'un processus 32 bits dans un environnement 64 bits
- 19. Dev .NET 32 bits par rapport à 64 bits prod
- 20. Détection d'un jre 64 bits dans un navigateur 32 bits?
- 21. Sérialisation binaire .NET entre OS 32 bits et 64 bits
- 22. Impossible de compiler 32 bits avec 64 bits g ++
- 23. Compiler git pour linux 32 bits sur un hébergement partagé
- 24. Compilation avec DMD sur Linux 64 bits ou Liaison avec des fichiers objet 32 bits
- 25. Assemblage 16 bits sur Windows 64 bits?
- 26. python sur 32 bits
- 27. Linux 64 bits, langue d'assemblage, problèmes?
- 28. Application java 64 bits à utiliser 32 bits dll
- 29. 64 bit weblogic 32 bits Oracle DB
- 30. Accès aux applications 32 bits du registre 64 bits
Plus un. J'essaye de construire Git pour Solaris. 'uname -m' renvoie' i86pc'. Toutes les bibliothèques dépendantes, à l'exception d'une dizaine, ont mal évalué la plateforme. Seul OpenSSL l'identifie correctement comme x86_64. – jww