2011-10-20 26 views
23

私は現在32ビットモードでコンパイルしなければならないプログラムを持っており、実験用の暗号を含むopenSSLのバージョンとリンクする必要があります。したがって、私は32ビットのopenSSLをコンパイルする必要があります。64ビットシステムで32ビットモードでopenSSLをコンパイルするにはどうすればよいですか?

./config -m32 

コンパイラフラグに-m32と-m64の両方が含まれています。

答えて

23

tumbleweedのバッジは私に戻って自分自身に答えるように私に思い出させました!私は仕事にこれを得た 方法を使用することでした:

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

Iは、Solarisのx86マシン上でコンパイルしようとしたことを除いて、私は、同様の問題がありました。 setarchはSolarisでは利用できないので、他の答えの中で示唆されているより単純なアプローチを使用することはできませんでした。

OpenSSLの 'config'スクリプトは、ターゲットシステムと判断したシェルラッパーであり、重い作業を行う 'Configure' perlスクリプトを呼び出します。 Configureにはたくさんのターゲットが組み込まれています: '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ビット開発パッケージをインストールする必要がありました。必ず、結果は

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 

ビンゴ何であるかを確認するために、ファイルコマンドを使用して作成するテストとして

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

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ビットをチェックし、OSの設定を準備します。たとえば、OSは64ビットです。次のように設定してください。 repace x86_64- -linux?)OUT = "linux-x86_64" ;; とx86_64- -linux?)OUT = "linux-generic32" ;;

関連する問題