it-swarm-id.com

Bagaimana cara mengkompilasi openSSL dalam mode 32 bit pada sistem 64bit?

Saya memiliki program yang saat ini harus dikompilasi dalam mode 32 bit (untuk saat ini) dan perlu dikaitkan dengan versi openSSL dengan cipher eksperimental yang disertakan. Karena itu saya perlu mengkompilasi openSSL 32 bit. Menggunakan

./config -m32 

hasil dalam -m32 dan -m64 dimasukkan dalam flag compiler.

28
Gary Barker

Lencana tumbleweed mengingatkan saya untuk kembali dan menjawabnya sendiri! Cara saya menggunakannya adalah dengan menggunakan:

setarch i386 ./config -m32
26
Gary Barker

Sayangnya, setarch bukan perintah yang valid pada sistem LFS saya, jadi saya harus melakukannya dengan cara yang berbeda:

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

Catatan: ini adalah contoh minimal untuk membuatnya berfungsi sesuai keinginan OP:

./Configure -m32 linux-generic32

Saya memiliki masalah yang sama, kecuali saya mencoba untuk mengkompilasi pada mesin Solaris x86. setarch tidak tersedia di Solaris, jadi saya tidak bisa menggunakan pendekatan yang lebih sederhana yang disarankan dalam salah satu jawaban lain di sini.

Skrip 'config' untuk OpenSSL adalah pembungkus Shell yang menentukan apa yang dianggapnya sebagai sistem target, kemudian memanggil skrip Perl 'Konfigurasi', yang melakukan pekerjaan berat. Configure memiliki banyak target bawaan: Anda dapat menggunakan 'Perl Configure TABLE' untuk mendapatkan daftar semuanya. Ini adalah kasus memilih target yang Anda butuhkan dari daftar yang tersedia.

Jadi, jika Anda ingin memaksanya untuk membangun untuk target selain dari yang ia pikir Anda harus, Anda dapat memanggil 'Konfigurasi' secara langsung, melewati nama target yang Anda inginkan. Misalnya, untuk membuat Solaris 32 bit saya berfungsi, saya menggunakan:

./Configure solaris-x86-cc --shared

atau, dalam kasus pertanyaan awal, apakah itu sistem Linux yang dapat Anda gunakan:

./Configure linux-generic32 --shared
5
harmic

Untuk membuat kompilasi 32 bit bekerja pada Centos 5 x64 saya harus melakukan keduanya setarch dan -m32, serta menginstal paket devel 32 bit untuk glibc

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

sebagai ujian untuk memastikan, gunakan perintah file untuk melihat apa hasilnya

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
Rmolinger

Mungkin akan dapat memodifikasi file "config" di openssl, karena ia akan terlebih dahulu memeriksa OS 64 bit atau 32 bit, dan menyiapkan konfigurasi untuk OS, misalnya, OS adalah 64bit, dan kita dapat memodifikasi istilah dalam konfigurasi sebagai di bawah ganti x86_64 - -linux?) OUT = "linux-x86_64" ;; [.____. dengan x86_64- - linux?) OUT = "linux-generic32" ;;

0
Sara Liu

Jalankan ./Configure linux-generic32 dan kemudian make CC="gcc -m32" bekerja untuk saya ketika mengkompilasi openssl-1.0.0.c pada versi CentOS-5.5 64bit.

Pada cara membangun aplikasi 32b pada mesin 64bit, centang this , yang memberikan langkah-langkah terperinci tentang cara menginstal file header dan perpustakaan 32bit yang diperlukan di berbagai platform.

0
D3Hunter