OpenSSLをビルド

前準備

activeperlをダウンロードしてC:\Perlにインストール
nasm-2.11.06-installer.exeをダウンロードしてC:\nasmにインストール

解凍

https://www.openssl.org/からopenssl-1.0.2.tar.gzをダウンロードしてC:\osl\openssl-1.0.2に解凍

デスクトップにnasmのショートカットができているのでここからプロンプト起動、これはnasmにパスを張るだけ。perlも起動できるか確認。

nasmperl

Config

nmake

ここでVC環境が必要なのでVC10のvcvarsall.batを実行

nmake実行

10分くらいで終了、次にテスト

30秒くらいで終了、次にインストール、これはやらなくてもいいらしいが

完成

kansei

boostがライブラリを見つける方法

WindowsのVC2013で調べた場合。
boost\config\auto_link.hppが各種のマクロ定義から最終的に
#pragma comment(lib, “boost…lib”)を呼ぶ。

影響するマクロは_DLL, _MT, _DEBUG, __SGI_STL_PORTなど多数。
lib名の最後につくdgsとかのsは_DLLならsがつかない。そうでなければsがつく。
_DLLは/MDか/MDd (Multithreaded DLL)があればつく。/MDはランタイムをダイナミックリンクする。

boostのスタティックライブラリは標準ランタイムをstatic linkしたもの。
最近のビルドはほとんど/MDのはずなのでsはいらない。/MTの場合はランタイムをスタティックリンクする。

boostのビルドを何も考えずに行った場合staticバージョンはビルドされない。

BOOST_LIB_DIAGNOSTICを定義すればビルド時にlibのファイル名がわかる。

win32でファイルが開かれているか調べる

簡単な方法はないようだ。このコードでも以下の問題がある。

  1. ファイルはグローバルリソースなのでこの関数が戻った時点で本当に開かれているのかどうかわからない。
  2. この関数は他のオープン操作を失敗させてしまう。