2011-10-20 212 views

回答

23

風滾草徽章提醒我回來,自己回答! 我得到這個工作的方法是使用:

setarch i386 ./config -m32 
11

不幸的是我,setarch不是我LFS系統上的有效指揮,所以我不得不這樣做以不同的方式:

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

注:這是最小的例子,使其工作作爲OP願望:

./Configure -m32 linux-generic32 
5

我有一個類似的問題,但我嘗試編譯的Solaris x86計算機上。 setarch在Solaris中不可用,所以我不能在這裏使用其他答案中建議的更簡單的方法。

OpenSSL的'config'腳本是一個shell封裝器,它決定了它認爲是目標系統的內容,然後調用'Configure'perl腳本,這個腳本完成了繁重的工作。配置有很多內置目標:您可以使用'perl Configure TABLE'來獲取所有這些目標的列表。這是從可用列表中選擇您需要的目標的情況。

因此,如果你想強制它爲一個它認爲你應該的目標以外的目標構建,你可以直接調用'Configure',傳遞你想要的目標名稱。例如,爲了讓我的Solaris 32位建設工作,我用:

./Configure solaris-x86-cc --shared 

,或者在原來的問題的情況下,如果它是一個Linux系統,你可以使用:

./Configure linux-generic32 --shared 
2

爲了得到在Centos 5 x64上的32位編譯工作,我必須同時執行setarch-m32,以及安裝glibc的32位開發包。

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

的測試,以確保,使用文件命令,看看有什麼結果

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 

賓果!

0

運行./Configure linux-generic32然後make CC="gcc -m32"在CentOS-5.5 64位版本上編譯Openssl-1.0.0.c時適用於我。

關於如何在64位機器上構建32b應用程序,請檢查this,其中詳細介紹瞭如何在各種平臺上安裝必需的32位頭文件和庫。

0

可能會修改openssl中的「config」文件,因爲它會首先檢查OS 64位或32位,併爲操作系統準備配置,例如操作系統是64位,我們可以修改在配置中的術語如下 repace x86_64- -linux?)OUT =「linux-x86_64」;; 與x86_64- -linux?)OUT =「linux-generic32」;;