私は現在32ビットモードでコンパイルしなければならないプログラムを持っており、実験用の暗号を含むopenSSLのバージョンとリンクする必要があります。したがって、私は32ビットのopenSSLをコンパイルする必要があります。64ビットシステムで32ビットモードでopenSSLをコンパイルするにはどうすればよいですか?
./config -m32
コンパイラフラグに-m32と-m64の両方が含まれています。
私は現在32ビットモードでコンパイルしなければならないプログラムを持っており、実験用の暗号を含むopenSSLのバージョンとリンクする必要があります。したがって、私は32ビットのopenSSLをコンパイルする必要があります。64ビットシステムで32ビットモードでopenSSLをコンパイルするにはどうすればよいですか?
./config -m32
コンパイラフラグに-m32と-m64の両方が含まれています。
tumbleweedのバッジは私に戻って自分自身に答えるように私に思い出させました!私は仕事にこれを得た 方法を使用することでした:
setarch i386 ./config -m32
残念ながら私にとって、Setarchでは、私のLFSシステム上で有効なコマンドではなかったので、私は別の方法でそれをしなければならなかった:
./Configure shared threads zlib-dynamic --prefix=/usr --openssldir=/etc/ssl -m32 linux-generic32
注:これはOPが希望通りに動作させるために、最小限の例です。
./Configure -m32 linux-generic32
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
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
!
実行./Configure linux-generic32
、次にmake CC="gcc -m32"
は、CentOS-5.5 64ビット版でOpenssl-1.0.0.cをコンパイルするときに機能します。
64ビットマシンで32bアプリケーションをビルドする方法は、thisをチェックします。これは、さまざまなプラットフォームに必要な32ビットヘッダーファイルとライブラリをインストールする方法の詳細な手順を示しています。
OpenSSLで "config"ファイルを変更できるのは、まずOS 64ビットまたは32ビットをチェックし、OSの設定を準備します。たとえば、OSは64ビットです。次のように設定してください。 repace x86_64- -linux?)OUT = "linux-x86_64" ;; とx86_64- -linux?)OUT = "linux-generic32" ;;