Comment compiler openSSL en mode 32 bits sur un système 64 bits?

j'ai un programme qui doit actuellement être compilé en mode 32 bits (pour l'instant) et doit être relié à une version d'openSSL avec les chiffreurs expérimentaux inclus. Par conséquent, je dois compiler un openSSL 32 bits. En utilisant

./config -m32 

résultats dans les options-m32 et-m64 du compilateur.

26
demandé sur Gary Barker 2011-10-20 15:58:19

6 réponses

le badge tumbleweed m'a rappelé de revenir et d'y répondre moi-même! La façon dont je me suis de ce travail était d'utiliser:

setarch i386 ./config -m32
25
répondu Gary Barker 2011-10-27 12:22:07

Malheureusement pour moi, setarch n'était pas une commande valide sur mon LFS système, j'ai donc dû le faire d'une autre manière:

./Configure shared threads zlib-dynamic --prefix=/usr --openssldir=/etc/ssl -m32 linux-generic32

Note: Ceci est l'exemple minimal pour le faire fonctionner comme OP souhaite:

./Configure -m32 linux-generic32
12
répondu Искрен Хаджинедев 2017-03-17 01:34:03

j'ai eu un problème similaire, sauf que j'essayais de compiler sur une machine Solaris x86. setarch n'est pas disponible dans Solaris, donc je ne pourrais pas utiliser l'approche plus simple suggérée dans l'une des autres réponses ici.

le script' config ' D'OpenSSL est un wrapper de shell qui détermine ce qu'il pense être le système cible, puis appelle le script perl 'Configure', qui fait le levage lourd. Configure a beaucoup de cibles intégrées: vous pouvez utiliser 'perl Configure TABLE' pour obtenir une liste de tous d'entre eux. Il s'agit de sélectionner la cible dont vous avez besoin à partir de la liste disponible.

Donc, si vous voulez le forcer à construire pour une cible autre que celui qu'il pense que vous devriez, vous pouvez appeler 'Configurer' directement, en passant le nom de la cible que vous voulez. Par exemple, pour que ma construction Solaris 32 bits fonctionne, j'ai utilisé:

./Configure solaris-x86-cc --shared

ou, dans le cas de la question d'origine, si c'était un système Linux, vous pouvez utiliser:

./Configure linux-generic32 --shared
5
répondu harmic 2013-05-13 06:45:54

pour que la compilation 32 bits fonctionne sur Centos 5 x64 j'ai dû faire les deux setarch et -m32, ainsi qu'installer le paquet devel 32 bits pour glibc.

setarch i386 ./Configure --prefix=/usr linux-generic32 -m32 shared
sudo yum install glibc-devel-2.5-118.el5_10.2.i386
make

comme test pour être sûr, utilisez la commande file pour voir quels sont les résultats

file libcrypto.so.0.9.8 libssl.so.0.9.8
libcrypto.so.0.9.8: ELF **32-bit** LSB shared object, Intel 80386, version 1 (SYSV), not stripped
libssl.so.0.9.8:    ELF **32-bit** LSB shared object, Intel 80386, version 1 (SYSV), not stripped

Bingo!

2
répondu Rmolinger 2014-08-07 15:55:59

Exécuter ./Configure linux-generic32 et make CC="gcc -m32" fonctionne pour moi lors de la compilation Openssl-1.0.0.C on CentOS-5.5 version 64bit.

en ce qui concerne la construction d'une application 32b sur une machine 64bit, cochez , qui donne des étapes détaillées sur la façon d'installer les fichiers d'en-tête et les bibliothèques 32bit nécessaires sur diverses plateformes.

0
répondu D3Hunter 2014-12-10 08:47:19

peut être will peut modifier le fichier "config" dans openssl, parce qu'il vérifiera d'abord L'OS 64 bit ou 32 bit ,et le préparer le configure pour OS, par exemple, l'OS est 64bit,et nous pouvons modifier le terme dans la config comme ci-dessous repace x86_64 --linux?) OUT="linux-x86_64";; avec x86_64--linux?) OUT= "linux-generic32";;

0
répondu Sara Liu 2017-03-31 02:08:47