MinGWでSSL enabledなcurlをビルドする

MinGWでSSLが使えるcurlをビルドするのはちょっと骨が折れましたので、 備忘録として書いておきます。

MinGWでSSLが使えるcurlをビルドするのはちょっと大変でした。以下に私が行った手順を記録しておきます。

First, build OpenSSL

まずOpenSSLをダウンロードし展開します。以下の操作はすべてMinGWのbashを想定しています。

$ wget http://www.openssl.org/source/openssl-1.0.1i.tar.gz
$ tar xzf openssl-1.0.1i.tar.gz
$ cd openssl-1.0.1i

ここでOpenSSLのConfigureに工夫が必要です。このConfigureにはperlが必要っぽいので、なければ入れてください。

$ ./Configure mingw shared zlib-dynamic

ポイントは./configを使わないことと、sharedを指定することです。zlib-dynamicはオマケですが、まぁ指定しておいて損はないでしょう、たぶん。

あとは普通にコンパイルとインストールをしましょう。

$ make && make install

インストールディレクトリは/usr/local/sslになります。またその下のbinディレクトリには2つdllがあるはずですから、それらを/usr/local/binにコピーしておきます。

$ cp /usr/local/ssl/bin/*.dll /usr/local/bin

Then, build curl

次にcurlをダウンロードして展開しましょう。

$ wget http://curl.haxx.se/download/curl-7.37.1.tar.bz2
$ tar xjf curl-7.37.1.tar.bz2
$ cd curl-7.37.1

curlのconfigureにも一工夫が必要でした。

$ ./configure --with-ssl --enable-shared --disable-static

SSLを使うように--with-sslを指定するのは当然として、--enable-shared--disable-staticを指定して、DLLを利用するバージョンだけを作るようにしましょう。

あとは普通にコンパイルとインストールです。

$ make && make install

おっと最後にcurlのルート証明書をインストールしなきゃいけません。

$ wget http://curl.haxx.se/ca/cacert.pem
$ cp cacert.pem /usr/local/bin/curl-ca-bundle.crt

以上。MinGWでSSLが有効になったcurlを使えるようになりました。