2011-10-20 7 views

risposta

23

Il badge tumbleweed mi ha ricordato di tornare indietro e rispondere da solo! Il modo in cui ho ottenuto questo al lavoro è stato quello di utilizzare:

setarch i386 ./config -m32 
11

Purtroppo per me, setarch non era un comando valido sul mio sistema LFS, così ho dovuto farlo in un modo diverso:

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

Nota: questo è l'esempio minimo per farlo funzionare come vuole OP:

./Configure -m32 linux-generic32 
5

ho avuto un problema simile, tranne che stavo cercando di compilare su una macchina Solaris x86. setarch non è disponibile in Solaris, quindi non ho potuto usare l'approccio più semplice suggerito in una delle altre risposte qui.

Lo script 'config' per OpenSSL è un involucro della shell che determina quello che pensa sia il sistema di destinazione, quindi chiama lo script perl 'Configure', che esegue il pesante sollevamento. Configure ha molti obiettivi incorporati: puoi usare 'perl Configure TABLE' per ottenere un elenco di tutti loro. Si tratta di selezionare l'obiettivo desiderato dall'elenco disponibile.

Quindi, se vuoi forzarlo a costruire per un bersaglio diverso da quello che pensa di dover, puoi chiamare direttamente "Configura", passando il nome del bersaglio che desideri. Ad esempio, per ottenere il mio Solaris a 32 bit a costruire a lavorare, ho usato:

./Configure solaris-x86-cc --shared 

o, nel caso della domanda iniziale, se si trattava di un sistema Linux è possibile utilizzare:

./Configure linux-generic32 --shared 
2

Per ottenere la compilazione a 32 bit su CentOS 5 x64 ho dovuto eseguire sia setarch e -m32, sia installare il pacchetto di sviluppo a 32 bit per glibc.

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

come un test per assicurarsi che il comando, file di uso per vedere quali sono i risultati

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!

0

Eseguire ./Configure linux-generic32 e quindi make CC="gcc -m32" funziona per me durante la compilazione di Openssl-1.0.0.c su CentOS-5.5 versione a 64 bit.

A partire da come creare un'applicazione 32b su una macchina a 64 bit, controllare this, che fornisce passaggi dettagliati su come installare i file di intestazione e le librerie a 32 bit necessari su varie piattaforme.

0

Potrebbe essere possibile modificare il file "config" in openssl, perché controllerà prima l'OS 64 bit o 32 bit e preparando la configurazione per OS, ad esempio, il SO è a 64 bit, e possiamo modificare il termine in config come sotto repace x86_64- -linux?) OUT = "linux-x86_64" ;; con x86_64- -linux?) OUT = "linux-generic32" ;;