Visual Studio 2005 StandardでOpenSSLをコンパイルしてみた(メモ)

ちょっと前から興味があったんで、そのうち使おうかなと考えてVS2005 standardでコンパイルしてみました。
忘れそうなんでいちおうここにメモとして書いて置きます。
・・・というか、もうこういうのはあんまりやりたくないです。

何もよくわからないでやってるんで間違いがあるかもしれません・・・鵜呑みにしないでくださいw

男は度胸!なんでもためしてみるのさ。

・まず、ここからソースをダウンロードします。
 (これをやった時点では、openssl-1.0.0d.tar.gzが最新だった)

・ダウンロードしたファイルを展開します。
 tar.gzってWindowsじゃあまり馴染みがないです。Linuxとかなら tar -zxvf openssl-1.0.0d.tar.gz とかすれば展開できると思いますが
 Windowsなので、tar.gzを展開できるやつで展開します。(Lhazとか)

 えーっと、展開したらINSTALL.W32にビルドとインストールの方法が書かれているみたいです。
 英語、、、ですね、はい、わかりません。
 こういう時はGoogle翻訳で翻訳してもらいましょう。
 37行目ぐらいにVisual C++と書いてあるんでそこらへんからでしょうね。
 なになに・・・
 If you want to compile in the assembly language routines with Visual
 C++, then you will need already mentioned Netwide Assembler binary,
 nasmw.exe or nasm.exe, to be available on your %PATH%.


 なるほど、わからん。・・・ってなわけでGoogleに翻訳していただきます。

 あなたは、Visualを使用してアセンブリ言語ルーチンでコンパイルする場合は、
 Cは+の場合、あなたはすでに、Netwideアセンブラはバイナリに記載する必要があります+
 nasmw.exeまたはnasm.exeは、あなたの%PATH%を上で利用できるように。


 ・・・意味不明。たぶんVC++使うならここからですと勝手に脳内変換。
 で、次は・・・

 Firstly you should run Configure with platform VC-WIN32:
 まず第一に、プラットフォームは、VC - Win32と構成を実行する必要があります:

 VC++でコンパイルするための構成を作れって事?

・Perlが必要だということに気づき、ActivePerlをここからダウンロードしてインストールします。
 インストールは得に迷う事はないと思うので省略。
 コマンドプロンプトを開いてperl -vと入れて何やら出てくれば大丈夫だと思います。

・Visual Studio 2005のコマンドプロンプトを開きます。
 (スタート→すべてのプログラム→Microsoft Visual Studio 2005→Visual Studio Tools→Visual Studio 2005 コマンドプロンプト)
 開いたら、opensslを展開したディレクトリへ移動します。例)cd /d D:\openssl-1.0.0d

・コマンドプロンプトでコマンドを入れていきます。
 perl Configure VC-WIN32 --prefix=c:/openssl/dir
 --prefix=で指定している場所がインストール先になるみたいです。たぶんC:/opensslとかでもいいのかな?
    :
    :
 BN_LLONG mode
 RC4_INDEX mode
 RC4_CHUNK is undefined

 Configured for VC-WIN32.
 ・・・みたいな感じになればいいと思います。

 んで、次。

 Next you need to build the Makefiles and optionally the assembly  language files:
 次に、Makefileをオプションでアセンブリをビルドする必要があります
 言語ファイル:


 アセンブリ言語をビルドする・・・ってことでいいのかな?

 If you are using NASM then run:
 あなたはNASMはを使用している場合、実行します:

 ・・・はい?
 下のもついでに翻訳

 If you don't want to use the assembly language files at all then run:
 すべての後、実行時にアセンブリ言語ファイルを使用したくない場合は:

 nasmを使うか使わないか、って事でしょう。たぶん。
 じゃあ、使うことにして次のコマンドを投入。
 ms\do_nasm
 ・・・何かペラペラ出てきて終わった。
 さて、今度は・・・

 If you get errors about things not having numbers assigned then check the
 troubleshooting section: you probably won't be able to compile it as it
 stands.

 あなたはそのチェックに割り当てられた番号を有することについてのエラーを取得する場合
 セクションのトラブルシューティング:あなたは、おそらくそれとしてコンパイルすることができなくなります
 立っている。


 ・・・立っているw 何がw

 Then from the VC++ environment at a prompt do:
 VC + +の環境その後からプロンプトでください:
 If all is well it should compile and you will have some DLLs and
 executables in out32dll. If you want to try the tests then do:

 すべてがうまくされている場合は、コンパイルする必要がありますし、いくつかのDLLのとなります。
 out32dllの実行可能ファイルその後、テストをしようとする場合です:

 
 ・・・意味わかんねぇwww
 ググってみたけど、たぶんtestとついてる方は出来上がったdllとかのテストなんじゃないかな?わからん。
 まぁ、やりたければやれってことで。
 とりあえず、ビルドを。
 nmake -f ms\ntdll.mak
 ・・・nasmがないとエラー。めんどくさ・・・
 ないならダウンロードするしかないからここからダウンロード。
 とりあえずインストーラとかあまり好きじゃないんでzipの方を。

 で、set path=%path%;c:\nasmとかしてnasm.exeのあるのパスを通して再度nmake -f ms\ntdll.makを実行。

 今度はcrypt32.libがないと怒られます。

 何で? どうやら、VS2005 standardには入ってないみたい・・・入れとけよ。
 入れるためにはPlatform SDKをここらへんからダウンロードしてインストールします。
 何かググったらStandardのPlatformSDKはサブセットでフル版じゃないとか。はぁ・・・何かわけわからんし。
 ExpressでもないのにPlatformSDKを入れないといけないとは思ってませんでした。
 インストールが終わったら何か環境変数が変わってるみたいなんでVisual Studio 2005 コマンドプロンプトを一度閉じて再度立ち上げました。
 そして再びnmake -f ms\ntdll.makを実行。
 3度目の正直ってやつですね。今度はうまくいったみたいです。
 それから今度はnmake -f ms\ntdll.mak testを実行して何かテストするみたいですが
 今回はやりませんでした(というか、またこんな事するかわかりませんが)
 で、ビルドしたバイナリをインストール。
 これは上の方で--prefix=c:/openssl/dirって指定した所にインストールされるんでしょうね。
 というわけで、nmake -f ms\ntdll.mak installで、指定されたフォルダにコピーされるようです。

これでひととおり終わりかな?
VC++で使用する場合はインクルードファイルとライブラリファイルにそれぞれincludeとlibのフォルダを設定します。

あと、ms\ntdll.makms\nt.makでビルドするとDLLが不要なlibができあがるようです。
当然、それでビルドしたらexeのサイズが大きくなります。
自分のとこの環境ではDLL版でビルドしたexeは64KB程度でしたが、DLL不要のlibで作ったexeは596KBにもなりました。
すごく・・・大きいです・・・

どちらで作るかはお好みで・・・ってことですかね。

あと、わざわざここでなくてもいいでしょうけどコンパイルしたやつを置いときますんで、ご自由にどうぞ。
バージョンは1.0.0dです。
・DLL版
 openssl_vs2005.zip(DLL必要)

・LIB版(zipだとサイズが大きいので7-Zipで圧縮してます。7-Zipを展開するツールがない場合は自己解凍形式の方をどうぞ)
 openssl-vs2005-static.exe(DLL不要)※自己解凍形式
 openssl-vs2005-static.7z(DLL不要)
 

libeay32.liblibeay32.libをリンクに追加するのを忘れないようにしてください。
もしくは、↓の2行をソースに書いておくか。
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")


|TOP|